コンパイラの場合の違い
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/02/16 05:20 UTC 版)
上の例では電卓のようにその場で値を求めることはできる。しかしYaccを利用してコンパイラを開発する場合は、このあとのコード生成部(2)に渡す抽象構文木(abstract syntax tree、AST)というデータの構造を構築していかなければならない。たとえばアクションでユーザ定義関数を呼び出し、 { $$ = node( '+', $1, $3 ); } のように左辺と右辺を「+」で結合してそのポインタを返すような操作を行わせることで可能である。すると、構文解析が末端から順次還元を行って根まで統合されて停止したとき、同じ構造の抽象構文木が根まで完成して得られることになる。 このように葉から順に根に至る構文解析法をボトムアップ構文解析という(ここでは木を上下逆さまにして根は一点にしたイメージなので“ボトムアップ”という)。
※この「コンパイラの場合の違い」の解説は、「Yacc」の解説の一部です。
「コンパイラの場合の違い」を含む「Yacc」の記事については、「Yacc」の概要を参照ください。
- コンパイラの場合の違いのページへのリンク