たとえば、bisonとflexを使う場合は、
$ bison -d -y pl0.y
によって、y.tab.hとy.tab.cを生成し、
$ flex -l pl0.l
によって、lex.yy.cを生成し、y.tab.c, lex.yy.c, table.c, codegen.c から実行ファイルを作ります。
mainはy.tab.cにあります。
yaccを使うことによって、コンパイラの動作を構文規則に則して書くことができるので、
C版やJava版に比べると大変簡潔でわかりやすいものになっています。
ただし、このコンパイラはソースプログラムのエラーに対しては大変弱いです。
エラーがあれば、コンパイラは"parse error"、または"syntax error"とプリントして
直ちに構文解析を終了するだけです。
わずかに、変数名のリストの中の","について、それを書き忘れたときにも通るように処置してあるだけです。
pl0.lとpl0.yは図書館情報大学の大学院生 宍戸浩子さんのレポートを筆者が少し書き直したものです。(2002.2.20)