re: Bison を使用して AST を構築する方法:
Bison から AST を構築する簡単な例については、このサイトを参照してください: EPaperPress。
Mitsuhisa Sato の例も参照してください(これは、Bison を使用した単純なインタープリターのコードです)。
re: AST を使用した通訳者とストレート通訳者のパフォーマンスの違い。
インタープリターを作成する方法はたくさんあります。以下のリストは、(一般的に) パフォーマンスが最も遅いものから最も速いものまでです (単純なプログラムの場合、ほとんど違いがないことに注意してください。しかし、同じコードを何度も繰り返すプログラムの場合、大きな違い):
- ストレートな解釈
- コメントのトークン化や削除など、いくつかの前処理を行う
- ASTを構築し、それを解釈する
- 中間コード (バイトコード) に変換し、AST を使用するかどうかに関係なく、それを解釈します。
速度を比較するには、次のようにします。
移動先: Tom Gibson の Tiny C サイト。
そして、適切なインタープリターをダウンロードします。Tom Gibson の Tiny C for DOS か、おそらく Windowsか、Tom Gibson の Tiny C for Linuxです。
これは純粋なインタープリターです - 上記の #1。素数などを計算する小さなプログラムを作成し、それを計測します。
Sato のサイトの「Tiny C」には、上記の AST - #3 から解釈するインタープリターが含まれています。同様のプログラムを作成し、時間を計ってください。
最後に、Marc Feeley の Tiny C から別の Tiny C を入手します。
これは AST を作成し、それをバイト コードに変換してから解釈します - 上記の #4。これのために小さなプログラムを書き直して、その時間を計ってください。
これが役立つことを願っています!