オブジェクトのテキスト表現を含むファイルがあります。テキストを解析してオブジェクトを返すコンビネーターパーサー文法を作成しました。本文中の「#」はコメント区切り文字です。その文字から行末まではすべて無視されます。空白行も無視されます。非常に大きなファイルを処理できるように、一度に1行ずつテキストを処理したいと思います。
パーサーの文法を一般的なコメントと空白行のロジックで乱雑にしたくありません。前処理ステップとしてこれらを削除したいと思います。ファイルを行上のイテレータに変換すると、次のようになります。
Source.fromFile("file.txt").getLines.map(_.replaceAll("#.*", "").trim).filter(!_.isEmpty)
そのような式の出力をコンビネーターパーサーに渡すにはどうすればよいですか?Reader
このようなフィルタリングされた式からオブジェクトを作成する方法がわかりません。JavaFileReader
インターフェースはそのようには機能しません。
これを行う方法はありますか、それともパーサー文法にコメントと空白行のロジックを入れる必要がありますか?後者の場合、util.parsing
すでにこれを行っているパッケージはありますか?