これは、java.g4 で見たルールの 1 つです。
DecimalLiteral : ('0' | '1'..'9' '0'..'9'*) IntegerTypeSuffix? ;
このように書いてみませんか:
DecimalLiteral : ('0'..'9'+) IntegerTypeSuffix? ;
足りないものはありますか?ご意見ありがとうございます
よろしく フィリップ・フランクソン
意図は で0あるが、DecimalLiteralで始まる他のすべての整数は0であるOctalLiteral。
次のようなルールのペアを使用することをお勧めします。
OctalLiteral : '0'+ [1-7] [0-7]* IntegerTypeSuffix?;
DecimalLiteral : [0-9]+ IntegerTypeSuffix?;
そして、無効な 8 進整数 (このペアのルールでは引き続き として受け入れられるDecimalLiteral) の検証を、解析プロセスの後のステップに延期します。