Documentation
¶
Index ¶
Constants ¶
View Source
const ( LOWEST = iota // 最低优先级 ASSIGN // 赋值运算符优先级(=, +=, -=, *=, /= 等) LOGIC // 逻辑运算符优先级(&&, ||) BIT // 位运算符优先级(^, &, |, <<, >>) EQUALS // 相等性运算符优先级(==, !=) CONTAINS // 包含运算符优先级(contains) COMPARE // 比较运算符优先级(<, <=, >, >=) RANGE // 范围运算符优先级(..) SUM // 加减运算符优先级(+, -) MUL // 乘除运算符优先级(*, /, %) PREFIX // 前缀运算符优先级(!, -, ~, +) POSTFIX // 后缀运算符优先级(++, --) CALL // 函数调用优先级(fn()) NAMESPACE // 命名空间访问符优先级(::) )
运算符优先级常量定义,数值越大优先级越高
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Parser ¶
type Parser struct {
L *lexer.Lexer // 词法分析器实例
CurrToken *lexer.Token // 当前正在处理的token
NextToken *lexer.Token // 下一个待处理的token
Err error // 解析过程中产生的错误
PrefixParseFns map[string]func(*util.Pos) ast.Expression // 前缀表达式解析函数映射表
InfixParseFns map[string]func(ast.Expression, *util.Pos) ast.Expression // 中缀表达式解析函数映射表
}
Parser 语法解析器结构体,负责将词法分析器产生的token流解析为AST
func (*Parser) CheckNextAndAdvance ¶
CheckNextAndAdvance 检查下一个token是否为预期类型,如果是则前进,否则设置错误
参数:
excepted - 预期的token类型
func (*Parser) ParseExpression ¶
func (p *Parser) ParseExpression(precedence int) ast.Expression
ParseExpression 解析表达式,根据运算符优先级递归构建表达式节点
参数:
precedence - 当前表达式的最低优先级要求
返回值:
解析得到的表达式节点
Click to show internal directories.
Click to hide internal directories.