コンテンツにスキップ

言語プロセッサー (言語処理プログラム) @基本ソフトウェア

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. アセンブラ方式

アセンブラ方式とは

アセンブリ型言語を機械語に翻訳する。


02. コンパイラ方式

コンパイラ方式とは

コンパイラ型言語を機械語に翻訳する。


コンパイラ方式の仕組み

▼ 機械語翻訳と実行

コードをバイナリ形式のコードに翻訳した後、CPU上で命令が実行される。

命令の結果はメモリに保管される。

compiler_language

▼ コンパイラによるビルド

コンパイルによって、コードは機械語からなるバイナリ形式のコードに変換される。

その後、バイナリ形式のコードはリンクされ。

exeファイルとなる。

この一連のプロセスを『ビルド』という。

また、ビルドによって作成されたファイルを『アーティファクト (成果物) 』という。

ビルドとコンパイル


機械語翻訳とは

lexical_syntax_semantics

(1) Lexical analysis (字句解析)

コードの文字列を言語の最小単位 (トークン) の列に分解する。

以下に、トークンの分類方法の例を以下に示す。

字句解析のアルゴリズムは、LexやFlexで実装されている。

解析器をルーツを辿れない問題をブートストラップ問題という。

構文規則と説明

(2) Syntax analysis (構文解析)

トークンの列をツリー構造に変換する。

構文解析のアルゴリズムは、BisonやYaccで実装されている。

解析器をルーツを辿れない問題をブートストラップ問題という。

コンパイラ型言語の構文解析に失敗した時、これらの構文解析言語はシンタックスエラーを出力する。

(3) Semantics analysis (意味解析)

ツリー構造を基に、コードに論理的な誤りがないかを解析する。

(4) Code optimization (コード最適化)

コードの冗長な部分を削除または編集する。

機械語をより短くできる。

(5) Code generation (コード作成)

最適化されたコードをバイナリ形式のコードに変換する。

(6) リンク

バイナリ形式のコードをリンクする。

(7) 命令の実行

リンクされたバイナリ形式のコードを基に、命令が実行される。


03. インタプリタ方式

インタプリタ方式とは

インタプリタ型言語を機械語に翻訳する。


インタプリタ方式の仕組み

▼ 機械語翻訳と実行

コードをバイナリ形式のコードに1行ずつ変換し、その都度、CPU上で命令が実行される。

命令の結果はメモリに保管される。

interpreted_language


機械語翻訳とは

(1) Lexical analysis (字句解析)

コンパイラ型言語と同じである。

(2) Syntax analysis (構文解析)

コンパイラ型言語と同じである。

(3) Semantics analysis (意味解析)

コンパイラ型言語と同じである。

(4) 命令の実行

コンパイラ型言語と同じである。

(5)

1から4をコード行ごとに繰り返す


04. 中間型言語の機械語翻訳

中間言語方式とは

記入中...

仕組み

(1)

JavaまたはJVM型言語のコードを、Javaバイトコードを含むクラスファイルに変換する。

(2)

JVM:Java Virtual Machine内で、インタプリタによって、クラスデータを機械語に翻訳する。

(3)

結果的に、OS (制御プログラム?) に依存せずに、命令を実行できる (C言語) 。

Javaによる言語処理_1

矢印_80x82

Javaによる言語処理_2

矢印_80x82

Javaによる言語処理_3


C言語とJavaのOSへの依存度比較

記入中...

CとJavaのOSへの依存度比較