lex2

package
v0.0.0-...-a214d60 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 7, 2024 License: BSD-3-Clause Imports: 6 Imported by: 0

Documentation

Overview

Package lex2 实现了词法分析器

Index

Constants

This section is empty.

Variables

View Source
var (
	TokenStrMap = [...]string{
		No:              "no (没有表示)",
		NAME:            "name (符号)",
		ASSIGN:          "assign (赋值)",
		VAR:             "var (变量声明)",
		FUNC:            "func (函数声明)",
		ADD:             "add (加号)",
		SUB:             "sub (减号)",
		MUL:             "mul (乘号)",
		DIV:             "dlv (除号)",
		LBRACE:          "lbrace (左大括号)",
		RBRACE:          "rbrace (右大括号)",
		Int:             "int (整数)",
		FLOAT:           "float (浮点数)",
		NoEqual:         "no equal (不相等)",
		Equal:           "equal (相等)",
		Less:            "less (小于)",
		Greater:         "greater (大于)",
		TRUE:            "true",
		FALSE:           "false",
		IF:              "if",
		ELSE:            "else",
		FOR:             "for",
		Break:           "break",
		Continue:        "continue",
		Struct:          "struct",
		Interface:       "interface",
		LEA:             "lea (取地址)",
		OnlyLEA:         "onlylea (&)",
		MLC:             "multiline comment (多行注释)",
		String:          "string (字符串)",
		SEMICOLON:       "semicolon(分号)",
		Return:          "return (返回)",
		LPAREN:          "lparen (左小括号)",
		RPAREN:          "rparen (右小括号)",
		Comma:           "comma (逗号)",
		GOTO:            "goto",
		Colon:           "colon (冒号)",
		Remain:          "remainder (取余数)",
		Deref:           "dereference (解引用)",
		Const:           "const (常量)",
		Inc:             "Increment (自增)",
		Dec:             "Decrement (自减)",
		Nil:             "nil (指针的零值)",
		Package:         "package (包声明)",
		Switch:          "switch",
		Case:            "case",
		Default:         "default",
		Method:          "method (方法)",
		AutoFree:        "autofree (自动释放块)",
		SinLineComments: "Single-Line Comments (单行注释)",
		AND:             "AND (位与运算)",
		Or:              "Or (位或运算)",
		Xor:             "Xor (异或运算)",
		LogicAND:        "logic and (逻辑与)",
		LogicOr:         "logic or (逻辑或)",
		Import:          "import (导入)",
		Enum:            "enum (枚举)",
		EOF:             "结束",
		LBRACK:          "lbrack (左中括号)",
		RBRACK:          "rbrack (右中括号)",
		NewLine:         "新行",
	}
)

Functions

This section is empty.

Types

type FileToken

type FileToken struct {
	// 文件名
	File string

	// 行号
	Line int
	// contains filtered or unexported fields
}

一个文件的词法分析结果

func NewFileToken

func NewFileToken(file string, src io.Reader, errctx *errcode.ErrCtx, enableComments bool) FileToken

NewFileToken 创建一个文件的词法分析结果

  • file是文件名
  • src是源代码
  • errctx是错误处理上下文
  • enableComments设置是否启用注释

func (*FileToken) Next

func (l *FileToken) Next() Token

Next 返回下一个未被识别的 Token

func (*FileToken) String

func (l *FileToken) String() string

type Token

type Token struct {
	//属性值
	Value string
	//种别码
	TYPE TokenType
}

Token 单词标记 代表一个最小词法单元

func NewToken

func NewToken(TYPE TokenType, value string) Token

NewToken 创建标记

func (Token) String

func (t Token) String() string

type TokenType

type TokenType int8

标记类型

const (
	No TokenType = iota
	NAME
	ASSIGN
	VAR
	FUNC
	ADD
	SUB
	MUL
	DIV
	LBRACE
	RBRACE
	Int
	FLOAT
	NoEqual
	Equal
	Less
	Greater
	TRUE
	FALSE
	IF
	ELSE
	FOR
	Break
	Continue
	Struct
	Interface
	LEA
	OnlyLEA
	MLC //multiline comment
	String
	SEMICOLON //semicolon分号
	Return
	LPAREN //Left parenthesis
	RPAREN //right parenthesis
	Comma
	GOTO
	Colon
	Remain
	Deref //dereference
	Const
	Inc //Increment
	Dec //Decrement
	Nil
	Package
	Switch
	Case
	Default
	Method
	AutoFree
	SinLineComments //Single-Line Comments
	AND
	Or
	Xor
	LogicAND
	LogicOr
	Import
	Enum
	EOF
	LBRACK
	RBRACK
	NewLine
)

func (TokenType) String

func (t TokenType) String() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL