サードパーティ アプリケーションによって生成されたファイルを解析する必要があります。ANTLR を使用して、問題なく動作するように見えるパーサーを作成しましたが、次のような問題が発生するまでは問題ありませんでした。
ファイル タイプは行ベースで、いくつかのキーワードを使用して階層構造を定義します。いわゆる「ブロック」で、それ自体がサブブロックなどを持つことができます。現在のブロックのタイプに応じて、さまざまな行に特別な意味があります。たとえば、ある特定のブロックでは、5 行目 (ブロックの先頭からの相対位置) がファイルの作成者を保持し、別のブロックでは、3 行目がファイル名です。これらはすべて基本的に文字列です。つまり、ユーザーはファイルを作成するときにデータに必要なものを何でも入力できます。しかし、それらが文字列であるという事実は、行番号を通じて暗黙のうちにのみ認識されます。
これらの文字列を識別するための引用符などがないため、レクサーはこれらのテキストの一部 (数字やキーワードと同一の単語など) をトークン化することがあります。パーサーのルールのトークン。
私がしようとしているように、この種のファイルをパーサージェネレーターで処理することは可能ですか? 私はパーサーの構築に精通していないので、この小さな問題を克服するのに役立つ簡単な回避策または ANTLR の機能があることを願っています。