第九回: 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 int
flex
, 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
の紙で提出ください。