High-Level Definitions
这一部分包含了C(-)*语言中所有的高层(全局变量以及函数定义)语法。
语法单元Program是初始语法单元,代表整个程序。
每一个Program可以产生一个ExtDefList,这里ExtDefList代表零个或多个ExtDef。
每一个ExtDef就代表着一个全局变量的定义、一个结构体的定义或者一个函数的
定义。其中,
ExtDef→SpecifierExtDecList SEMI这条产生式代表对全局变量的定义,例如int
global1, global2;其中Specifier代表类型,ExtDecList为零个或者多个对一个
变量的定义VarDec。
ExtDef→Specifier SEMI这条产生式专门为结构体的定义而准备,例如struct
{…};当然这条产生式会允许出现“int;”这样没有意义的语句,但实际上在标准
C中这样的语句是合法的。
ExtDef→SpecifierFunDecCompSt这条产生式代表函数定义:Specifier是返回类
型,FunDec是函数头,CompSt代表函数体。
Specifiers
这一部分产生式主要与变量的类型有关。
Specifier是类型描述符,它有两种取值:一种(Specifier→TYPE)是直接变成基
本类型int或float,而另一种(Specifier→StructSpecifier)是变成结构体类型
对于结构体类型来说,
StructSpecif
这一部分包含了C(-)*语言中所有的高层(全局变量以及函数定义)语法。
语法单元Program是初始语法单元,代表整个程序。
每一个Program可以产生一个ExtDefList,这里ExtDefList代表零个或多个ExtDef。
每一个ExtDef就代表着一个全局变量的定义、一个结构体的定义或者一个函数的
定义。其中,
ExtDef→SpecifierExtDecList SEMI这条产生式代表对全局变量的定义,例如int
global1, global2;其中Specifier代表类型,ExtDecList为零个或者多个对一个
变量的定义VarDec。
ExtDef→Specifier SEMI这条产生式专门为结构体的定义而准备,例如struct
{…};当然这条产生式会允许出现“int;”这样没有意义的语句,但实际上在标准
C中这样的语句是合法的。
ExtDef→SpecifierFunDecCompSt这条产生式代表函数定义:Specifier是返回类
型,FunDec是函数头,CompSt代表函数体。
Specifiers
这一部分产生式主要与变量的类型有关。
Specifier是类型描述符,它有两种取值:一种(Specifier→TYPE)是直接变成基
本类型int或float,而另一种(Specifier→StructSpecifier)是变成结构体类型
对于结构体类型来说,
StructSpecif