3
私はHaskellのAlexとHappyを使ってモナドパーサーを書いています。Happy Haskellの解析中にカスタムエラーを表示します
私の誤差関数は次のように定義されています
parseError :: Token -> Alex a
parseError _ = alexError "error occurred"
(数に文字列を追加しようとしたときに誤ったタイプのように)私は解析中にカスタムエラーを送信するにはどうすればよいですか?私は、オペランドのタイプを追跡するため、
UPDATE
パーサは型チェックを行う必要はありません、私は生産の内側にそれをやっています。 コメントで述べたように、parseError
を使用することはできません。そのため、エラーを出力してパーサーを停止する方法はありますか?
を検出した場合にだけ、 ''に '「エラーが発生しました」とは異なる文字列を渡す生産からそれを呼び出しますalexError' ...? –
しかし、私はプロダクションルールの文字列を渡す必要があります。 'parseError'関数は' Token'パラメータをとります。文字列ではありません。 – zeb
私はアレックスや幸せなことをあまり知らないと認めますなぜなら、 'parseError'があなたがしたいことをしないのであれば、' parseError'を変更しないでください。あるいは、あなたが望むことをする 'alexError'関数のほうを完全に使用しないでください。 –