言語理論とコンパイラ

第十一回: 上向き構文解析、エラー処理

2014 年 6 月 20 日

http://www.sw.it.aoyama.ac.jp/2014/Compiler/lecture11.html

Martin J. Dürst

AGU

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

今日の予定

前回のまとめ

 

前回の宿題

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

calc.y を、test.in から test.check になるように完成

calc.y を A4 (両面印刷、表紙なし、左上ホチキス止め、名前と学生番号をコメントに記述) で提出

正解例:[都合により削除]

文法のパターン: 繰り返し

一回以上の繰り返し:

項目列: 項目 項目列
| 項目
;

ゼロ回以上の繰り返し:

項目列: 項目 項目列
|
;

文法のパターン: 結合

左結合の場合:

大式: 大式 左結合演算子 小式
| 小式
;

右結合の場合:

大式: 小式 右結合演算子 大式
| 小式
;

文法のパターン: 優先度

(優先度は 小式 > 中式 > 大式)

大式: 大式 演算子 中式
| 中式
;
中式: 中式 演算子 小式
| 小式
;

文法のパターン: 括弧類

小式: 開括弧 大式 閉括弧
| 定数
;

bison の仕組みの分析

calc.output の内容:

構文エラーの処理

エラー処理の難しさ

エラー処理の要点

エラー処理の技法

bison でのエラー処理

宿題: 日付用の電卓

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

日付と日数の計算ができる簡単なプログラム言語を flexbison で実現し、.lex.y のファイルを印刷して提出

A4 両面印刷、表紙なし、ホチキス止め、名前、ふりがな、学生番号を右上に明記

来週質問可能なので、よく準備して質問できるようにしましょう

発展問題: 時間、月数、年数など

 

宿題のヒント