Abstract Syntax †

  • Abstract=いかなる実体とも結びついていないもの
  • コンパイラは、文が文法にそっているかをチェックするだけじゃダメ。
  • それ以上のなにか(Semantic Actions)が必要
  • 再帰降下パーサの場合、semantic actionはパーサーのなかにまき散らされている
  • ML-Yaccの場合、生成ルールにくっつけて書かれる

SEMANTIC ACTIONS †

  • 各要素(nonterminal/terminal)は意味的な値(semantic value)の型を持っている
  • semantic actionは、その値を生成する

RECURSIVE DESCENT †

  • semantic action=パーサ関数の返す値と、その関数が起こす副作用
  • 各要素について、実装言語の型が関連づけられている
  • Program 4.1が例ですよ。T'がちょっとトリッキー。左オペランドが書けているので、引数として渡している

ML-Yacc-GENERATED PARSERS †

  • ML-Yacc用の文法のsetのそれぞれに、semantic actionがMLの式の形でannotateされる
  • パーサがルールを還元するたびに、そのsemantic actionが実行される

ABSTRACT PARSE TREES †

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS