言語理論とコンパイラ

第十回: yacc 系ツールの原理、エラー処理

2011 年 6 月 17 日

http://www.sw.it.aoyama.ac.jp/2011/Compiler/lecture10.html

Martin J. Dürst

AGU

© 2005-11 Martin J. Dürst 青山学院大学

これからの予定

今日の予定

宿題

提出: 再来週の木曜日 (6 月 23日) 19 時 00 分、O 棟 529 号室の前

簡単な電卓を有理数の電卓に拡張してください。

有理数の表現方法として、[分子,分母] を追加 してください。

[] 内には割り算は許されないように文法を設計してください。

.lex.y のファイルを印刷して提出。A4 両面印刷、表紙なし、左上ホチキス止め、名前と学生番号をコメントに記述。

優先度と結合規則は文法で定義 (%left, %right など使わないこと)

来週質問が可能なので、よく準備して質問できるようにすること!

宿題のヒント

優先度の扱い

属性文法

(attribute(d) grammar(s))

導出の順番: 最左導出と最右導出

簡単な例:

E → E '+' T
T → integer

最左導出の場合に、いつもできるだけ左の終端記号を置き換える

文法の種類の呼び方

LALR 構文解析の原理

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

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

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

構文エラー処理

エラー処理の難しさ

エラー処理の要点

エラー処理の技法

bison でのエラー処理