%{
#ifdef abc
.
.
. // C declarations
.
%}
.
. // Yacc Declaration
.
%%
.
. //expected inputs and corresponding actins
.
%%
#endif
虽然这段代码为我编译,但即便如此,我强烈认为#ifdef abc
未正确放置。这种类型的代码对Yacc有效吗?
我在YACC的经验很少。
由于
答案 0 :(得分:2)
%{
和%}
之间的代码逐字地放在生成的C源文件的顶部,而规则之后的代码也是逐字地放在生成的文件的末尾。< / p>
所以问题的答案是:是的,它在Yacc和生成的源中都是正确的。但是,从可读性的角度来看,Yacc代码可能被认为是可疑的。