第九回: yacc 系ツールの演習
2007 年 6月15日
http://www.sw.it.aoyama.ac.jp/2007/Compiler/lecture9.html
duerst@it.aoyama.ac.jp, O 棟 529号室
© 2005-7 Martin J. Dürst 青山学院大学
flex の演習について読みやすさのため、コメントを /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,...
%token NUM PLUS ASTERISK ...#define YYSTYPE intflex, bison, gcc
などを忘れず使うのが難しいmake コマンドは makefile
の指定に従い、必要最小限の処理を実行make コマンドを cygwin
で追加makefile の書き方 (→はタブの意味):target: input1 input2
input3 ...
→target 作成命令make だけ打つと makefile 内の最初の
target が作られるスタートのためのファイル: makefile, calc.y, calc.lex
bison -v
で作った機械の明細のファイルを作成 (例: calc.output)#define YYDEBUG 1 でデバッグを ONdiff
コマンドで比較diff から出力がなかったらテスト成功calc 用テストファイル: test.in, test.check
提出: 再来週の木曜日 (6月28日) 19時00分、O 棟 529号室の前
簡単な電卓を有理数の電卓に拡張してください。
有理数の表し方として、[分子,分母] を追加
して下さい。
[]
内には割り算は許されないように文法を設計してください。
rational.lex と rational.y を A4
の紙で提出ください。