1.1 プログラミング言語

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