新プログラミング言語『Zero』を開発しました! 本サイトの記事数は「589」!!

yaccとlexって何?プログラミング言語の解析手順についても【3】

             
  • 2020.02.06
  • Zero
yaccとlexって何?プログラミング言語の解析手順についても【3】
Advertisement

 

前回はプログラミング言語を作成するための環境を構築しました

gccなんかはC言語のコンパイラなんだなと分かりますが、じゃあyaccとlexって何?ってことになります。

ってことで、今回はyaccとlexについて基礎知識を身に付けていこうと思います

※前回はyacc&lexの代わりに、bison&flexをインストールしましたが、同じものだと思ってもらっていいです。

 

 

僕のプロフィールはこちら

 

 

プログラミング言語の解析手順

yaccとlexの説明をする前に、そもそもプログラミング言語ってどういう風に解析されるのかを整理します

プログラミング言語は主に以下の手順で解析されます。

①字句解析

②構文解析

③意味解析

※以降、ソースや画像は以下のサイトから拝借させていただきます。

http://kmaebashi.com/programmer/devlang/yacclex.html

 

1.字句解析

字句解析とは、プログラムをトークンと言う単位に分割する処理のことです。

 

例えば、以下のソースコードがあるとします。

これを字句解析するとこうなります。

 

字句解析

 

2.構文解析

構文解析とは、先ほどの字句解析を元に解析木を構築する処理のことです。

構文解析

 

3.意味解析

構文解析を元に、型などの意味的解釈を行う処理です。

このフェーズで型などに不正があればエラーとなるわけですが、当然型なし言語であればチェックはされないことになります。

 

 

Advertisement

 

で、yaccとlexって何や?

lexとは、字句解析を行なうプログラムを自動で生成してくれるものです。

yaccとは、構文解析を行なうプログラムを自動で生成してくれるものです。

字句解析を行なうプログラムのことを「レキシカルアナライザ」と呼びます。
構文解析を行なうプログラムのことを「パーサ」と呼びます。

 

lex 字句解析を行なうプログラム(レキシカルアナライザ)を自動で生成してくれるもの。
yacc 構文解析を行なうプログラム(パーサ)を自動で生成してくれるもの。

 

 

おすすめ本

これおすすめやで。

 

 

 

まとめ

とりあえずyaccとlexのことが分からないと先に進めないので、今回はこれだけ。

次はyaccやlexを使って電卓プログラムを作ってみます。

さいなら。

 

Travelerを知らないの?