,+ ,* , ( , )
词素的数据类型
直觉上会想到用 char 表示词素, 在很多语言中, char 类型是 16 bit, 采用 UTF-16 编码 (比如 JAVA 和 C#), 对于占用...重复的事情还是交给程序处理为好, 于是下面开始思考编码实现.
First 集与 Follow 集
在前述过程中,其实每一步, 考虑的都是同一个问题: "下一步该怎么走?"...,更具体一点的表述: "当前状态后面可以跟随什么?" 编译原理中,把一个状态可以跟随的符号集合, 称为 Follow 集....这种模式会把数据表示 与 数据处理 耦合在一起, 如果数据的处理只有固定的几种, 那么尚可, 而如果经常变化则不太适合, 试想每当在接口中添加一个处理方法时, 都要去所有的 AST 子类更改, 在 AST...并且处理方法很多时, 会导致 AST 类过于膨胀, 各种不同类型的处理逻辑都混杂一起.
更好的办法是将 数据表示 与 数据处理 分离, 这便是访客模式(Visitor).