1.構文解析の処理

[例題のプログラミング言語の文法]

一般的な言語処理プロセッサ(コンパイラの場合)では,次のような処理を行います。

  (1)文の識別
     言語によっては,1行中に複数の文があったり,
     2行以上で1文だったりします。
     プログラムとは関係のない注釈行だったりします。
     文を解析する準備として,1つの文を取り出します。

  (2)語彙解析(Lexical Analysis)
     プログラム中の単語,演算子等を分離します。

  (3)構文解析(Syntax Analysis)
     1文の解析を行います。

  (4)意味解析(Semantic Analysis)
     文と文の間の関係を検査します。
     ただし,インタプリタでは,この処理は,
     陽に行われず,構文解析の一部や文の実行時の判別として,
     処理されることが多いようです。

  (5)コード生成(Code Generation)
     コードを生成します。
     ただし,最近のコンパイラでは,アセンブラソースプログラムを生成し,
     機械語への変換はアセンブラに任せることも多くなりました。
     (インタプリタの場合,中間コード生成)

インタプリタの場合,

 (a) 構文解析後,そのまま実行する方法
 (b) 中間的なコードを生成して,中間的なコードを実行する方法

の2種類があります。

このWebでは(b)の方式のインタプリタ例を示します。

すなわち,
式をポーランド記法に変換し,
その結果を中間コードとして生成して実行します。


    目 次

1.言語プロセッサの処理

2.文の識別

3.語彙解析

4.逆ポーランド記法

5.構文解析とコード生成

6.インタプリタ


ダウンロード
(以下をクリックするとダウンロードできます)

逆ポーランド記法への変換
本記事で示すソースプログラム例