2016-10-12 4 views
0

私は、小さなコンパイラを実践の一形態として設計しようとしています。私はまだ中間コード最適化や最適化に関するものはまだ読んでいません。コンパイラの設計 - 定数の値を計算する

これまでのところ、私は文法を説明するFLEX/BISONファイルを持っていて、うまく動作しています。これを実行している間、私は定数式のようにして定数定数のすべての加算式と乗法式を繰り返し、解析中にその値を計算する必要があると考えました。

これは正しいことですか?または、コードの最適化(私がそれらに読んだとき)にそのようなものを扱えるようにする必要がありますか?

答えて

3

コード最適化の際には、おそらくより良い仕事をすることができます。たとえば、3 + a + 39a + 42(符号なし整数演算の場合)に最適化できますが、解析中に検出するのは容易ではありません。

さらに興味深い定フォールディングは、変数が既知の定数値を持つことを検出するフロー分析の結果です。これは、解析中に行うことは間違いありません。

全体としては、パーサーに解析させ、セマンティック解析の最中と後に最適化を実行する方がよいでしょう。

関連する問題