加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
token.go 1.11 KB
一键复制 编辑 原始数据 按行查看 历史
Roderland 提交于 2021-11-03 15:55 . glox
package main
const (
// Single-character tokens.
LEFT_PAREN uint8 = iota
RIGHT_PAREN
LEFT_BRACE
RIGHT_BRACE
COMMA
DOT
MINUS
PLUS
SEMICOLON
SLASH
STAR
// One or two character tokens.
BANG
BANG_EQUAL
EQUAL
EQUAL_EQUAL
GREATER
GREATER_EQUAL
LESS
LESS_EQUAL
// Literals.
IDENTIFIER
STRING
NUMBER
// Keywords.
AND
ELSE
FALSE
FUN
FOR
IF
NIL
OR
PRINT
RETURN
TRUE
VAR
WHILE
// End of file.
EOF
)
type Token struct {
tokenType uint8
lexeme string
literal interface{}
line int
}
func _Token(tokenType uint8, lexeme string, literal interface{}, line int) Token {
return Token{tokenType: tokenType, lexeme: lexeme, literal: literal, line: line}
}
func findType(text string) uint8 {
switch text {
case "and":
return AND
case "else":
return ELSE
case "false":
return FALSE
case "for":
return FOR
case "fun":
return FUN
case "if":
return IF
case "nil":
return NIL
case "or":
return OR
case "print":
return PRINT
case "return":
return RETURN
case "true":
return TRUE
case "var":
return VAR
case "while":
return WHILE
default:
return IDENTIFIER
}
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化