言語理論とコンパイラ

第九回: yacc 系ツールの演習

2005 年 6月23日

AGU

© 2006 Martin J. Dürst 青山学院大学

下向き構文解析の実装: 簡単な手作りコンパイラ

プログラム: scanner.h, scanner.c, parser.c

下向き構文解析の問題点

上向き構文解析の概要

最左導出と最右導出

簡単な例:

E → F '+' F
F → integer

最左導出の場合にはいつもできるだけ左の終端記号が置き換えられている

文法の種類の呼び方

LALR 構文解析の原理

スタックを使って読んだトークンや途中の非終端記号を蓄積

オートマトンを使って出来るだけ簡単な操作で次のステップを決める

(LA)LR 構文解析の二つのオペレーション

属性文法

(attribute(d) grammar(s))

bison とは

flex と bison の資料

flex と bison の使い方の概要

make の活用

演習例: 簡単な電卓

スタートのためのファイル: makefile, calc.y, calc.lex

宿題: 複素数の電卓

提出: 再来週の金曜日 (7月7日) 10時45分、O 棟 529号室の前

簡単な電卓を複素数の電卓に拡張してください。複素数の表し方は 5i で虚数を表し、[実部,虚部] で複素数を表すようにして下さい。[] 内には実数演算は許されるが 5i みたいなものが来ないように文法を設計してください。

complex.lex と complex.y を提出ください。