Documentation ¶
Overview ¶
----------------------------------------------------------------
0. 词法分析,把所有词转换成 token(type, val)
括号
LBT /[(\[{]/ RBT /[)\]}]/
关键字
// KEYWORD //
逻辑
OP /(&&|\|\|)/
条件
COND /(==|!=|>=|<=|>|<)/
变量
IDENT /[a-zA-Z_][\w]*/
值
VAL NUM | BOOL | STRING NUM /(?:\+|-)?\d+(?:\.\d+)?/ BOOL /(?:true|false)/ STRING /('|")(.*?)(?:(?<!\\)|(?<=(?<!\\)(?:\\\\)+))(\1)/
空字符
DELIM /\s*/
无法解析
ILLEGAL /.+/
优先级 COND = OP > VAL > IDENT > LBT = RBT > (DELIM: 每次匹配前过滤掉空字符) > ILLEGAL
---------------------------------------------------------------- ----------------------------------------------------------------
- 把分词进行解析,生成最终的词法数组 >> 可以转回表达式 ---------------------------------------------------------------- ----------------------------------------------------------------
- 把词法数组解析,转成语法树 >> 不可以转回表达式
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type AstNode ¶
type AstNode struct { Type token.Token `json:"type"` Value any `json:"value"` Left *AstNode `json:"left"` // sub left tree, 只有非 term 节点才有, term 节点为 nil Right *AstNode `json:"right"` // sub right tree, 只有非 term 节点有, term 节点为 nil }
AstNode 语法树节点
Click to show internal directories.
Click to hide internal directories.