SmallJava 语言的类型检查与验证
1. 实用方法与语法测试
在 SmallJava 中,SJClass对象的特征成员包含SJField和SJMethod实例。为了能根据类型快速选择它们,编写实用方法很有必要。这些方法会作为扩展方法用于其他 Xtend 类,这样就能编写如c.methods和c.fields这样的表达式。快速访问返回语句的方法在为 DSL 编写单元测试时也很有用。
在编写 DSL 语法规则后,应立即为解析器编写单元测试。下面展示了一些有趣的测试用例,特别是关于表达式结合性的测试,如赋值和成员选择:
import static extension org.junit.Assert.* @RunWith(XtextRunner) @InjectWith(SmallJavaInjectorProvider) class SmallJavaParsingTest { @Inject extension ParseHelper<SJProgram> @Inject extension SmallJavaModelUtil @Test def void testMemberSelectionLeftAssociativity() { ''' class A { A m() { return this.m().m(); } } '''.parse.classes.head.methods.head.