0
%{
#ifdef abc
.
.
. // C declarations
.
%}
.
. //  Yacc Declaration
.
%%
.
. //expected inputs and corresponding actins
.
%%

#endif

尽管这段代码为我编译,但我强烈觉得#ifdef abc没有正确放置。这种类型的代码对 Yacc 有效吗?

我在 YACC 的经验很少。

谢谢

4

1 回答 1

2

%{和之间的代码%}逐字放在生成的 C 源文件的顶部,而规则之后的代码也逐字放在生成文件的末尾。

所以你的问题的答案是:是的,它在 Yacc 和生成的源中都是正确的。然而,从可读性的角度来看,Yacc 代码可能被认为是可疑的。

于 2012-07-13T06:20:20.543 回答