我在我的Xtext语法文件中定义了一个EnumRule:
enum MySpec_directionEnum:
left='"left"' | right='"right"' | none='"none"';
使用此规则,允许的枚举值为"left", "right" and "none"
(全部为小写)。我希望能够在任何情况下允许这些值(不区分大小写)。例如,我想也允许值为"left" or "Left" or "LEFT" or "LeFt"
,依此类推。
但我只想要 MySpec_directionEnum 枚举的值不区分大小写,而不是我的语法文件中的所有枚举。是否可以通过语法或某种验证?
答案 0 :(得分:3)
我认为您最好的选择是使用普通的解析器规则替换枚举规则,例如
MySpec_directionEnum:
value=STRING;
并检查验证器中value
是否为允许的字符串(不区分大小写的“left”,“right”或“none”):
@Check
public void check(MySpec_directionEnum e) {
String lowercaseValue = e.getValue().toLowerCase();
if (!lowercaseValue.equals("left")) {
error("Expected \"left\".", e,
ArithmeticsPackage.Literals.MY_SPEC_DIRECTION_ENUM__VALUE,
validationMessageAcceptor.INSIGNIFICANT_INDEX);
}
}
答案 1 :(得分:0)
如果你非常努力地写下你可以尝试的所有可能性
enum TestEnum:
x='x'| x='X' | y='y' | y='Y'
;