我正在为一个类似C语言的程序生成三地址代码,其中包含声明、算术、布尔、if和while语句。 目前我正在处理算术表达式。我从文本文件中读取类似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会打印语法错误?