C.3.2 宏定义
这部分用C语言的#define语句定义程序中要用的宏。例如
%{
…
#define EOF O
#dffine max(x,y)((x>y)。x∶y)
…
%}
C.3.3 数据类型定义
这部分定义语义动作中或程序段部分中要用到的数据类型,例如
%{
…
typedef struct interval {
double lo,hi;
}INTERVAL;
…
%}
C.3.4 全局变量定义
外部变量(external variable)和YACC源程序中要用到的全局变量都在这部分定义,例如
%{
…
extern int nfg;
double dreg[26];
INTERVAL Vreg[26];
…
%}
另外非整型函数的类型声明也包含在这部分中,请参看本附录C.6例2。
重申一遍,上述四部分括在%{和%}之间的内容是由YACC原样照抄到y.tab.c中去,所以必须完全符合C语言文法,另外,界符%{和%}最好各自独占一行,即最好不要写成:
%{ int x; %}
|