これは、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
) の検証を、解析プロセスの後のステップに延期します。