1

これは、java.g4 で見たルールの 1 つです。

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

このように書いてみませんか:

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

足りないものはありますか?ご意見ありがとうございます

よろしく フィリップ・フランクソン

4

1 に答える 1

4

意図は で0あるが、DecimalLiteralで始まる他のすべての整数は0であるOctalLiteral

次のようなルールのペアを使用することをお勧めします。

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

そして、無効な 8 進整数 (このペアのルールでは引き続き として受け入れられるDecimalLiteral) の検証を、解析プロセスの後のステップに延期します。

于 2013-03-20T17:59:01.683 に答える