【发布时间】:2017-11-14 19:29:30
【问题描述】:
我是 Lex/Yacc 的新手。找到这些解析 ansi C 的 lex 和 yacc 文件。
为了实验,我添加了一个动作来打印部分解析:
constant
: I_CONSTANT { printf("I_CONSTANT %d\n", $1); }
| F_CONSTANT
| ENUMERATION_CONSTANT /* after it has been defined as such */
;
问题是,无论我把动作放在哪里,无论我使用什么 $X,我总是得到 0 值。
我在这里打印出来了:
I_CONSTANT 0
即使我的输入是:
int foo(int x)
{
return 5;
}
有什么想法吗?
【问题讨论】:
-
对于
I_CONSTANT,词法分析器通过yylval返回实际值?或许您应该首先考虑一些关于 Lex 和 Yacc 的教程? -
@Someprogrammerdude 知道了。谢谢!