Parser:读出谓词和 if
本节阅读量:上一节已经确定目标 AST:
|
|
第三章的 lexer 不需要新增规则。它仍然只给括号补空格,再按空白切 token。
例如:
|
|
会切成:
|
|
eq? 读取两个表达式
|
|
左右两边都可以是任意表达式。判断某个表达式是不是 0,直接写成:
|
|
if 读取三个表达式
|
|
parser 在这里不求值 condition,也不选择分支。它只把三个位置原样保存在 AST 里。
identifier 规则没有变化
普通变量名仍然是一个或多个字母:
|
|
eq? 只在左括号后的 head 位置作为固定形式识别,并没有扩大普通变量名的范围。
试一下
|
|
if.lang 的输出是:
|
|
到这里,新增源码已经能稳定变成 AST。下一节让解释器执行它。
本节目录