4

私は ANTLR の初心者であり、ANTLR4 で ASN.1 パーサーを実行することを試みることで大きくなりました。私は現在、入力ファイルをgrunに渡している段階で、「入力時に1:12029行目では実行可能な代替手段がありません...」などのエラーが表示されます。

これをルールの問題に関連付けようとしていますが、問題のある入力を文字数で特定するのは困難です。ANTLR パーサーが入力を 1 行として表示するのは正常ですか? それとも、ルールの問題 (私は OSX システムを使用しています) のために EOL を認識できませんか? 入力が 1 つの長い行として表示されるのが正常な場合、ファイル内の特定の文字位置を見つけるためのツールを誰かが推奨できますか?

4

1 に答える 1

3

あなたのコードは\r行末のみを使用していますか? ANTLR 4 は、\n文字が消費された場合にのみ行数を増やし、文字位置をリセットします。プレーンな\r行末を処理する必要がある場合はLexerATNSimulator.consume、このチェックを実行するためにオーバーライドする必要があります。

行末の完全なセットをチェックすると、単独でチェックするよりもはるかにコストがかかるため、行末はまれであるため、デフォルトの実装ではパフォーマンスを最大化するために使用します。\n\r\n

于 2013-01-24T17:34:42.443 に答える