BNFで文法の生成を次のように表現すると便利なことがよくあります。
A ::= "car"
| "bike"
| ε
ここで、εは空のプロダクションルールを表します。つまり、非終端記号「A」は、終端記号「車」、「自転車」、または何にも拡張できません。ただし、文法をリファクタリングしない限り、FParsecでそのような文法をどのように表現するかはわかりません。私は「選択」コンビネータ<|>
を知っていますが、私が知る限り、「空の」コンビネータはありません。つまり、trueを返し、入力を消費しないコンビネータです。
FParsecのドキュメントを高低で検索しましたが、これを行うものは見つかりませんでした。これは一般的なシナリオのように思われるため、驚いています。私はFParsec(および一般的なコンビネータ)にかなり慣れていないので、適切な単語を使用していない可能性があります。ヒントはありますか?