1.2 言語処理の諸観点 (1)言語処理の利用分野 1.2 言語処理の諸観点 (1)言語処理の利用分野 ①プログラミング言語処理系(本講義の主要テーマ) ②データベース問合せ言語 ③自然言語翻訳システム ④自然言語理解 ⑤音声認識(ニューロネットなど学習システムとの組合せ) ⑥音声合成(自然言語生成との組合せ)
②インタプリタ(interpreter) ③プリプロセッサ(pri-processor) (2)処理形態による分類 ①コンパイラ(compiler) ②インタプリタ(interpreter) ③プリプロセッサ(pri-processor) ④マクロプロセッサ(macro processor) ⑤クロスコンパイラ(cross compiler)
①コンパイラ 入力データ (input data) 原始プログラム (source program) コンパイラ (compiler) 目的プログラム (object program) 実行 (execute) 出力データ (output data)
②インタプリタ 入力データ (input data) 原始プログラム (source program) インタプリタ (interpreter) 1文ずつ解釈実行 (execute for 1 statement) 出力データ (output data)
中間言語方式によるインタプリタ 仮想マシン語, 逆ポーランド記法, 構文木, 語彙解析結果など これをコンパイルと 呼ぶこともあるので注意 入力データ (input data) 原始プログラム (source program) 構文解析 /語彙解析 中間言語 中間言語解釈 (interpreter) 【処理方式のバラエティ】 出力データ (output data) ①仮想的なアセンブラ言語を出力し、仮想的なマシン語に変換し、中間言語インタプリタの入力とする。 ②マクロアセンブラのマクロ定義と組合わせ、対象マシンのアセンブラに変換しコンパイラとして使用。
対象マシンのマクロ定義を用いて機械語に (もうひとつのコンパイラの実現方法) 仮想マシンの アセンブラコード (assembler code for virtual machine) 構文解析 ・語彙解析 ・コード生成 原始プログラム (source program) 仮想マシンから対象マシン への変換用マクロ定義 (macro definition from virtual machine to target machine) 対象マシンの マクロアセンブラ (macro assembler) 入力データ (input data) 目的プログラム (object program) 出力データ (output data)
(source program described by another language) 何段階もプリプロセッサを繰り返すこともある。 ③プリプロセッサ 他言語の原始プログラム (source program described by another language) 原始プログラム (source program) プリプロセッサ (pre-processor) 何段階もプリプロセッサを繰り返すこともある。
④マクロプロセッサ マクロ記述を含む原始プログラム (source program with macro description) (pre-processor) 通常は ひとつの処理系 マクロを含まない原始プログラム (source program without macro description) コンパイラまたはインタプリタ (compiler or interpreter) アセンブラの場合「マクロアセンブラ(cross-assembler)」という
⑤クロスコンパイラ 原始プログラム (source program) クロスコンパイラ (cross-processor) 計算機B用のプログラム (processor) 計算機A (computer A) 計算機B (computer B) 対象機械または目的機械 (target machine or object machine) アセンブラの場合「クロスアセンブラ(cross-assembler)」という
(3)プログラミング言語処理系の観点から ①言語表現上(利用者)の観点 ②言語プロセッサ実装上の観点 ③言語プロセッサ開発支援の観点
①言語表現上(利用者)の観点 A. 言語表現分野とその分野による形式化 B. 言語で表現される問題の計算モデル C. 計算モデルにおけるプログラム表記法 D. マクロな計算モデルとミクロな計算モデルが存在する場合の変換系の想定 E. 各計算モデルの計算過程 【用語】計算モデル(computation model)
②言語プロセッサ実装上の観点 A. 処理形態(インタプリタ,コンパイラ,プリプロセッサ,マクロなどの処理方式の選択) B. 中間言語プログラムの構造 C. 機械語プログラムの構造 D. 字句解析,構文解析,意味解析,型推論等の方法 F. プログラム生成および変換方法
③言語プロセッサ開発支援の観点 A.言語処理系記述言語 B.言語処理系の移植方式 C.言語処理系の自動生成 D. 言語処理系作成支援ツール E. 言語処理系の作成方式・手段
(4)言語処理系を理論的に考える場合 ~以下の点が重要~ ①各計算モデルの概念的な整理 ②各計算モデルのプログラム表記法 ③計算モデル間の変換方法 ①高級言語(計算機構の概念的な動作) ②対象機械語(または動作原理) ③中間言語(中間言語を設定している場合)
補足 テキスト上または コンパイル時(compile time) 静的(static)= 動的(dynamic)= 実行時(runtime)