インデントベースの Python ライクな言語に FParsec を使用したいと考えています。
これは字句解析フェーズで行う必要があることは理解していますが、FParsec には字句解析フェーズがありません。FParsec を使用することは可能ですか? または、lexing 後にどのようにフィードできますか?
PD: F# は初めてですが、他の言語の経験があります。
インデントベースの Python ライクな言語に FParsec を使用したいと考えています。
これは字句解析フェーズで行う必要があることは理解していますが、FParsec には字句解析フェーズがありません。FParsec を使用することは可能ですか? または、lexing 後にどのようにフィードできますか?
PD: F# は初めてですが、他の言語の経験があります。
はい、可能です。
これは、FParsec の作成者による関連記事です。このテーマについてさらに詳しく知りたい場合は、この論文を読む価値があります。この論文は、FParsec に影響を与えたパーサー コンビネーターである Parsec に基づいた、インデントを意識した解析用の複数のパッケージがあることを指摘しています。
FParsec には個別の字句解析フェーズはありませんが、代わりに字句解析と解析を単一のフェーズに融合します。IMO インデントを意識した解析は、パーサー ジェネレーター (fslex/fsyacc) よりもパーサー コンビネーター (FParsec) を使用する方が適切です。その理由は、現在のインデントを手動で追跡し、コンテキストに基づいて適切なエラー メッセージを報告する必要があるためです。