抽象構文木
抽象構文木
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/03/20 10:04 UTC 版)
インタプリタとコンパイラの中間的手法の1つとして、ソースコードを最適化された抽象構文木 (AST) に変換し、その木構造にしたがってプログラムを実行するか、実行時コンパイラでの機械語コード生成に使用する方法がある。この方式では各文を1回だけ構文解析する必要がある。バイトコードに比べると、ASTではプログラムの全体的構造や文と文の関係を保持でき(それらはバイトコードでは失われる)、圧縮するとさらにコンパクトな表現になる。そのため、実行時コンパイラにとってはバイトコードよりもASTの方が優れた中間表現だとして提案されてきた。また、実行時の解析もより優れたものにできる。 しかし、ASTはバイトコードよりも冗長であるため、インタプリタとしてはオーバーヘッドが大きくなるという問題がある。CRuby の場合は、1.8までは構文木インタプリタであったが、1.9では(開発中には YARV と呼ばれていた)バイトコードインタプリタに入れ替えられ、性能が向上した。
※この「抽象構文木」の解説は、「インタプリタ」の解説の一部です。
「抽象構文木」を含む「インタプリタ」の記事については、「インタプリタ」の概要を参照ください。
- 抽象構文木のページへのリンク