它往往是方便的表達在BNF語法產生像代表小量生產與FParsec解析器組合
A ::= "car"
| "bike"
| ε
其中,ε表示空產生規則;即非終端「A」可以擴展到終端「汽車」,「自行車」或什麼都不是。但是,除非我重構我的語法,否則我不清楚在FParsec中如何表示這樣的語法。我知道'選擇'組合子,<|>
,但據我所知沒有'空'組合子。即,返回true並且不消耗輸入的組合器。
我已經搜索了FParsec文檔的高低,但是我還沒有找到任何能夠做到這一點的事情,這讓我感到驚訝,因爲這看起來像是一種常見的情況。我對FParsec(以及一般的combinators)相當陌生,所以也許我只是沒有使用正確的單詞。任何提示?
謝謝你提到這個,托馬斯。事實上,我在發佈上述問題後發現並使用了'preturn'。 – 2013-02-13 12:39:34
我剛剛在fparsec文檔中注意到[this](http://www.quanttec.com/fparsec/reference/primitives.html#members.:60::124::62::37) - 您可以優化'<|>其他'爲'<|>%其他'。 – 2013-02-13 23:46:35