私はOCamlで単純な再帰下降パーサーを書いています。通常(オンラインおよび書籍のチュートリアルからわかる限り)、例外は解析の失敗を示すために使用されます。次に例を示します。
match tok with
TokPlus -> ...
| _ -> raise SyntaxError
ただし、代わりにオプションタイプを使用することを考えています。
match tok with
TokPlus -> Some(...)
| _ -> None
これを実行したい主な理由は、オプションタイプを使用すると、一部のコンビネータを末尾再帰に最適化できるためです。
例外の代わりにオプションを使用することの欠点はありますか?より複雑な構造の解析を開始するときに、この決定は私を苦しめますか?