- 1、本文档共64页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
情报科学(10-11)
情報科学(10-11) 言語処理系と仮想機械 目次 数式を読み込んで式木を生成する 式木からその式の値を計算する,仮想機械の機械語プログラムを生成する 仮想機械を作り,生成された機械語プログラムを実行する 木構造(tree) 数式の構造は木構造になじむ ここで対象とする数式 数値: 自然数(0を含む) 演算: 四則演算(+, -, *, /) 演算の順序 カッコ内の演算を優先: (1+2)*3では + を * より先に計算 *, / を +, - より優先: 1+2*3は,1+(2*3)と解釈 左を右より優先: 1-2-3は(1-2)-3と解釈 数式から式木への変換の流れ 文字列: 1-2*3 字句解析 字句解析: 入力の文字列を解析して,数値や識別子などのトークンに変換すること 123 や MyName のように複数文字をまとめる 「123」は数値,「MyName」は識別子というように種別を判定する トークンは有限(状態)オートマトンを使って切り出す 有限オートマトン 状態遷移による計算は,計算が状態空間を移動してゆくものと考えられる 有限オートマトンに対応 → 数理的なモデル 自然数を受理する有限オートマトン 構文解析 構文解析: トークンがどのように組み合わさっていくかを解析 組み合わさり方は文法で定義する 再帰的データ構造 リスト構造 ::= セル | nil | 数や文字列などの基本データ型 セル ::= リスト構造とリスト構造の対 木構造 ::= 変数名 | 数 | 木構造と演算子と木構造の3組 BNF トークン(終端記号): 字句要素例: 0, 1 非終端記号:例: B (非終端記号が何を意味するかは以下の生成規則で決まる) 生成規則: 非終端記号 ::= トークンと非終端記号の列左辺から右辺を導出できることを示す左辺が等しいものは右辺を「|」で区切ってまとめる例: B ::= 0 B | 1 B | ε 開始記号: 非終端記号の一つ例: B 数式(式)のBNF 優先順位を表すために以下の非終端記号を導入する E: 式(expression) 例 8-4/(7-5) T: 項(term) 例 4/(7-5) F: 因子(factor) 例 8 例 (7-5) 式のBNF E ::= E + T | E - T | T T ::= T * F | T / F | F F ::= NUMBER | ( E ) 8+4/(7-5)は式か? 1++2は式か? 文法の階層(チョムスキー階層) タイプ-0文法: チューリングマシンが受理する言語 タイプ-1文法: 文脈依存文法 生成規則: αAβ ::= αγβの形式 タイプ-2文法: 文脈自由文法 生成規則: A ::= γの形式 タイプ-3文法: 正規表現 有限オートマトンが受理する言語 FAQ Q. 正規表現より文脈自由文法の方が強力なのであれば,字句解析を構文解析にまとめてしまえるのではないか? A. 原理的には可能だが,文脈自由文法は強力なだけに解析が難しいので,有限オートマトンで容易に解析できる部分を先にやってしまった方が楽なので分けている.(米国西海岸に行くときにも,最初はバスや電車,飛び道具は成田に行ってから) 解析木の作り方 左再帰の問題 左再帰の除去 E ::= T E’ E’ ::= + T E’ | - T E’ | ε T ::= F T’ T’ ::= * F T’ | / F T’ | ε F ::= NUMBER | ( E ) 再帰下降構文解析: 開始記号から出発して,先読みしたトークンにより決まる生成規則を使って解析木を作る方法 再帰的データ構造定義の例 # 中置記法の数式に合わせて Expr = Struct.new(:left, :operator, :right) # 1-2-3から得られるデータ構造 Expr.new(Expr.new(1, :-, 2), :-, 3)) E ::= T E’E’ ::= + T E’ | - T E’ | ε コード生成 式木から式を計算する機械語を生成する ターゲットとする計算機: ED21 http://lecture.ecc.u-tokyo.ac.jp/ johzu/joho/ed21/ 高水準言語 高水準言語 人間が理解しやすい形でプログラムを読み書きできる言語 “コンパイラ”を使うことで機械語に変換する 高水準言語の例: C言語,C++言語 コンパイラ(compiler) プログラム言語で書かれたプログラム(ソース)を機械語(オブジェクト)に変換(翻訳
文档评论(0)