2012-07-13 51 views
0
%{ 
#ifdef abc 
. 
. 
. // C declarations 
. 
%} 
. 
. // Yacc Declaration 
. 
%% 
. 
. //expected inputs and corresponding actins 
. 
%% 

#endif 

尽管此代码编译为我连话,我强烈地感受到#ifdef abc放置不正确。这种类型的代码是否适用于Yacc。这种类型的yacc代码是否有效?

我在YACC很少有经验。

由于

+0

我怀疑这是有效的,而不是试图欺骗YACC本身,把条件宏放在你的代码。 – 2012-07-13 06:11:33

+0

@ H2CO3我知道,但奇怪的是,这段代码编译并按预期工作 – 2012-07-13 06:15:52

回答

2

%{%}之间的代码在所生成的C源文件的顶部被置于逐字,而规则后的代码也提出逐字,但在所生成的文件的末尾。

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

+0

谢谢,我不知道+1 – 2012-07-13 06:22:52