Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
这是我在 java.g4 中看到的规则之一:
DecimalLiteral : ('0' | '1'..'9' '0'..'9'*) IntegerTypeSuffix? ;
为什么不这样写:
DecimalLiteral : ('0'..'9'+) IntegerTypeSuffix? ;
有什么我想念的吗?感谢您的反馈意见
问候菲利普弗兰克森
目的是要有0a ,但所有其他整数都以be aDecimalLiteral开头。0OctalLiteral
0
DecimalLiteral
OctalLiteral
我更喜欢使用这样的一对规则:
OctalLiteral : '0'+ [1-7] [0-7]* IntegerTypeSuffix?; DecimalLiteral : [0-9]+ IntegerTypeSuffix?;
然后将无效八进制整数的验证(这对规则仍将作为 a 接受DecimalLiteral)推迟到解析过程的后续步骤。