1

这是我在 java.g4 中看到的规则之一:

DecimalLiteral : ('0' | '1'..'9' '0'..'9'*) IntegerTypeSuffix? ;

为什么不这样写:

DecimalLiteral : ('0'..'9'+) IntegerTypeSuffix? ;

有什么我想念的吗?感谢您的反馈意见

问候菲利普弗兰克森

4

1 回答 1

4

目的是要有0a ,但所有其他整数都以be aDecimalLiteral开头。0OctalLiteral

我更喜欢使用这样的一对规则:

OctalLiteral : '0'+ [1-7] [0-7]* IntegerTypeSuffix?;
DecimalLiteral : [0-9]+ IntegerTypeSuffix?;

然后将无效八进制整数的验证(这对规则仍将作为 a 接受DecimalLiteral)推迟到解析过程的后续步骤。

于 2013-03-20T17:59:01.683 回答