表达式语言的类型检查、解释器与优化
1. 类型检查与类型计算机
在表达式验证器中,除了常量表达式(隐式类型正确)外,为每种表达式都设置了 @Check 方法。这些方法会使用 ExpressionsTypeComputer 检查子表达式的类型是否符合特定表达式的预期。例如,对于 MulOrDiv 表达式,会检查其子表达式是否都为整数类型,若不是则在非整数类型的子表达式上标记错误。
这种策略避免了验证器多次检查同一对象,因为类型计算委托给了非递归的 ExpressionsTypeComputer ,并且验证器仅会在有问题的子表达式上生成有意义的错误标记。
1.1 类型表示
由于表达式DSL的语法中没有类型,需要一种方式来表示它们。定义了一个类型接口 ExpressionsType ,并为每种类型实现一个类,如 StringType 、 IntType 和 BoolType 。这些类实现了 toString 方法,但不包含其他信息。
将类型和类型计算机的类写在新的Java子包 typing 中。若要使这些类在主插件项目外可见(如用于测试),需在 MANIFEST.MF 编辑器的 Runtime 选项卡中将该包添加到导出包列表中。
在类型计算机中,为每种类型定义一个静态字
超级会员免费看
订阅专栏 解锁全文
5万+

被折叠的 条评论
为什么被折叠?



