第十回: yacc 系ツールの演習
2009 年 6 月 11 日
http://www.sw.it.aoyama.ac.jp/2010/Compiler/lecture10.html
© 2005-10 Martin J. Dürst 青山学院大学
簡単な例:
E → E '+' F
F → integer
最左導出の場合に、いつもできるだけ左の終端記号を置き換える
スタックを使って読んだトーケンや途中の非終端記号を蓄積
オートマトンを使って出来るだけ簡単な操作で次のステップを決める
(LA)LR 構文解析の二つのオペレーション
(attribute(d) grammar(s))
E1 → E2 '-' E3
E1
) = S(E2
) -
S(E3
)diff
コマンドで比較diff
から出力がなかったらテスト成功calc 用テストファイル: test.in, test.check
提出: 再来週の木曜日 (6 月 24日) 19 時 00 分、O 棟 529 号室の前
日付と日数の計算が出来る簡単なプログラム言語をflex
と bison で実現し、.lex
と .y
のファイルを印刷して提出。A4
両面印刷、表紙なし、ホチキス止め、名前と学生番号をコメントに記述。
yyyy-mm-dd
(うるう年などのチェックは不要)PnnD
(nn
は日数そのもの; http://en.wikipedia.org/wiki/ISO_8601#Durations
など参照)%left
,
%right
など使わないこと);
で区切る。各文の結果を一行に出力来週質問可能なので、よく準備して質問できるようにすること!
発展問題: 時間、月数、年数など