15、表达式语言的类型检查、解释器与优化

表达式语言的类型检查、解释器与优化

1. 类型检查与类型计算机

在表达式验证器中,除了常量表达式(隐式类型正确)外,为每种表达式都设置了 @Check 方法。这些方法会使用 ExpressionsTypeComputer 检查子表达式的类型是否符合特定表达式的预期。例如,对于 MulOrDiv 表达式,会检查其子表达式是否都为整数类型,若不是则在非整数类型的子表达式上标记错误。

这种策略避免了验证器多次检查同一对象,因为类型计算委托给了非递归的 ExpressionsTypeComputer ,并且验证器仅会在有问题的子表达式上生成有意义的错误标记。

1.1 类型表示

由于表达式DSL的语法中没有类型,需要一种方式来表示它们。定义了一个类型接口 ExpressionsType ,并为每种类型实现一个类,如 StringType IntType BoolType 。这些类实现了 toString 方法,但不包含其他信息。

将类型和类型计算机的类写在新的Java子包 typing 中。若要使这些类在主插件项目外可见(如用于测试),需在 MANIFEST.MF 编辑器的 Runtime 选项卡中将该包添加到导出包列表中。

在类型计算机中,为每种类型定义一个静态字

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值