FsLexYacc を使用して、Python のような空白のインデント (必要に応じてインデント/デデント トークンを発行) を実装しようとしています。
FsLexYacc は使用できないようですunput
。これは、空白ベースのインデントを字句解析するための C/C++ の例で使用されているものです。字句解析中に「インデント スタック」として追加の引数を使用しようとしましたが、字句ルールごとに複数のトークンを返すことができなかったため、ファイルの末尾にある保留中のすべての字下げ、または間に必要な複数の字下げを返すことができませんでした。
最初に完全な文字列をトークン化し、必要に応じて空白をインデント/デデントに置き換えるためにすべてのトークンに個別のパスを適用する必要なく、FsLexYacc に空白ベースのインデントを実装する方法はありますか? (LexBuffer<char> -> token)
(この可能な解決策でさえ、生成されたパーサーに署名を渡すことができるようにするために、署名を扱うのは難しいようです)