<翻译单元>--><外部声明>--><函数定义>|<申报>
<函数定义>--><声明说明符>--><声明符>--><申报>|<复合语句>
<声明说明符>--><存储类说明符>|<类型说明符>|<类型限定符>
<存储类说明符>-->"auto | register | static| extern | typedef"
<类型说明符>-->"void| char| short| int| long| float| double| signed| unsigned"| <struct-or-union-specifier>| <enum-specifier>| <typedef-name>(结构或联合说明符,枚举符,类型定义名称)
<结构或联合说明符>--><结构或联合> <标识> <“{“{<结构声明>} +”}”> | <结构或联合>”{“{<结构声明>} +”}” | <结构或联合> <标识符>
<结构或联合>-->”结构” | “联合”
<结构声明> --> {<说明限定符>} * <结构说明符列表>
<说明限定符> --> <类型说明符>| <类型限定符>
<结构说明符列表> --> <结构说明符>| <结构说明符列表> “,”<结构说明符>
<结构说明符>--><说明符>| <声明符>“:”<常量表达式>|“:”<常量表达式>
<声明符> -->{<指针>}?(-->“*”{<类型限定符>} * {<指针>}?)<直接说明符>