14
私がParsecでよく抱える問題の1つは、「正しい」場所に入力された無効な入力を無視する傾向があることです。具体的な例として Parsec:すべての入力を消す
は、我々はinteger :: Parser Int
があると、私は(今のところ空白の問題を無視します。)
これは正しく "123 + 456 + 789" のようなものを解析し
expression = sepBy integer (char '+')
を書きます。しかし、 "123 + 456-789"と入力すると、不正な " - "文字とその末尾の部分を気前よく無視します。私は実際にその部分を無視しているだけでなく、無効な入力について私に知らせるエラーメッセージがほしいと思っていました。
私は理解していますなぜこれが起こりますか。私はそれを修正する方法についてはわからない。 をすべて消費するパーサーを設計する一般的な方法は何ですかすべてが有効な式である場合にのみ入力され、成功しますか?