やっほー
yacc&lexって何?プログラミング言語の解析手順についても

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

  • 2020年2月6日
  • 2021年3月29日
  • Zero
  • ,
  • 79view

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

前回の記事はこちら!

さーーーて、今回から本格的に新プログラミング言語を作っていきます。 と言いたいところですが、まずはそのための下準備「環境構築」が必要です。 全体的に昔に作られたツールばっかりなので色々戸惑いそうですが、ささっとやっていきましょう[…]

独自プログラミング言語を作成する!~環境構築~【2】

 

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

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

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

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

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

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

  1. 字句解析
  2. 構文解析
  3. 意味解析
ソースや画像はこちらのサイトから拝借させていただいております。

1. 字句解析

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

 

例えば↑のソースコードを字句解析するとこうなります。

 

字句解析

2. 構文解析

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

構文解析

3. 意味解析

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

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

で、yaccとlexって何や?

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

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

きも男
意外と簡単やな

おすすめ本

これおすすめやで。

まとめ

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

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

ではさいなら~。

次回の記事はこちら!

地獄の電卓作成編!開幕! 前回は「yacc」と「lex」についてお話ししましたが、実践しないとわけ分からんので実際に手を動かしていきます。 プログラミング言語を作るにあたり、まずは電卓を作ってみて、その後本格的に言語作成に入ります。[…]

lexファイルの文法の読み方を解説!地獄の電卓作成編【4】
yacc&lexって何?プログラミング言語の解析手順についても
フォローしてもらえると泣いて喜びます