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 に答える