2012-02-21 12 views
0

コンパイラの経験はあまりありませんが、最終的にコンパイラを書く必要があります。私はパーサのためにFParsecを使用していますが、今は評価者を使っています。私は(私は)かなり典型的なアプローチを取っています。私は、環境とASTノードをとるeval関数を持っています。環境はスコープによって異なるため、永続型です。これはevalを必要とし、それは助手がenv * nodeを返す必要があり、すべての環境渡しが扱いにくくなり始めています。コンパイラ環境の追跡方法

これに対処する標準的な方法は何ですか?私は、各スコープによって変更された共有環境をよりきれいにすることを考え始めていますが、可能ならばそれを避けたいと思います。

答えて

0

ほとんどの構文的配管を避けるために、副作用を使用する代わりに状態モナドを使用できます。

+0

あなたはそれがコンパイラで物事を簡素化すると思いますか? – Daniel

+0

私は十分な経験を持っていないので、両方の方法で強い意見があります。 – Brian

+0

私は、ワークフローに構文上の制限があると思っていましたが、それは何かを覚えていません。 – Daniel

関連する問題