我正在为包含声明、算术、布尔值、if 和 while 语句的 ac 类程序生成三个地址代码。目前我从算术表达式开始。我正在从文本文件中读取 c 类程序。
法典代码:
yacc代码:
输入C样程序(test.txt的内容)
a=1+2/3;
我有一个像这样的make文件:
bison -d -v parser.y
flex -o parser.lex.c parser.lex
gcc -o cparser parser.lex.c parser.tab.c -lfl -lm
./cparser
当我编译我的输入文件时,我得到以下输出:
t1=2/3/3
t2=1+2/3;+t1
a=1+2/3;=t2
Parsing Successful. The three address code is:
syntax error
Successful parsing.
- 为什么 $1 $2 $3...等不包含所需的减少?
- 为什么 stderr 打印语法错误?