言語理論とコンパイラ

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

2007 年 6月15日

http://www.sw.it.aoyama.ac.jp/2007/Compiler/lecture9.html

Martin J. Dürst

duerst@it.aoyama.ac.jp, O 棟 529号室

AGU

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

今週の予定

コメントの正規表現

読みやすさのため、コメントを /x x/ にし、スペースを使用

第一案: /x .* x/ 問題: /xx/ /xx/ をまとめて認識

第二案: /x [^x]* x/ 問題: /xxx/ を認識しない

第三案: /x ([^x]|x[^/])* x/ 問題: /x xx/ /x x/ をもとめて認識

第四案: /x ([^x]|x+[^/])* x/ 問題: 以前と同様

第五案: /x ([^x]|x+[^/x])* x/ 問題: /x xx/ を認識しない

第六案: /x ([^x]|x+[^/x])* x+/ 完成!

参考: Mastering Regular Expressions, Jeffrey E.F. Friedl, pp. 168,...

bison とは

flex と bison の資料

flex と bison の使い方の概要

make の活用

演習例: 簡単な電卓

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

bison の仕組みとデバッグ

開発のコツ

calc 用テストファイル: test.in, test.check

宿題: 有理数の電卓

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

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

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

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

rational.lexrational.y を A4 の紙で提出ください。