#contents *Abstract Syntax [#da27e519] - Abstract=いかなる実体とも結びついていないもの - コンパイラは、文が文法にそっているかをチェックするだけじゃダメ。 -それ以上のなにか(Semantic Actions)が必要 - 再帰降下パーサの場合、semantic actionはパーサーのなかにまき散らされている - ML-Yaccの場合、生成ルールにくっつけて書かれる **SEMANTIC ACTIONS [#bb9f7a5b] - 各要素(nonterminal/terminal)は意味的な値(semantic value)の型を持っている - semantic actionは、その値を生成する *** RECURSIVE DESCENT [#db382e4c] - semantic action=パーサ関数の返す値と、その関数が起こす副作用 - 各要素について、実装言語の型が関連づけられている - Program 4.1が例ですよ。T'がちょっとトリッキー。左オペランドが書けているので、引数として渡している *** ML-Yacc-GENERATED PARSERS [#e6c57c3f] - ML-Yacc用の文法のsetのそれぞれに、semantic actionがMLの式の形でannotateされる - パーサがルールを還元するたびに、そのsemantic actionが実行される **ABSTRACT PARSE TREES [#abfecb18]