我在Xtext中开发简单的DSL语言,类似于JSON或标记语言。我想在编辑自定义语言项目时自动验证输入的整数值范围。例如,我有属性"超时",我想提供从100到1000的约束。我知道终端规则,但它只允许验证单个数字字符:从0到9.实际上,我可以写下这样的东西:
terminal RANGE :
('0'..'9')('0'..'9')('0'..'9') | ('0'..'9')('0'..'9')('0'..'9')('0'..'9')
表示一定数量的数字'数字,但我不认为这是一个聪明的解决方案。
是否有可能为这些范围制定规则?
答案 0 :(得分:0)
您可以通过绑定IValueConverter
在guice中为RANGE
终端规则注册自定义IValueConverterService
。
或者您在使用RANGE
作为属性的所有地方实施语义验证。