<翻译单元> -> <外部声明>
<外部声明> -> <函数定义>
<函数定义> -> <声明说明符> <声明符> <复合语句>
<声明说明符> -> <存储类说明符> | <类型说明符>| <类型限定符>
<存储类说明符> -> “auto” | "register"| "static"| "extern"| "typedef"
<类型说明符> ->“void”| "char"| "short"| "int"| "long"| "float"| "double"| "signed"| "unsigned"| <struct-or-union-specifier>| <enum-specifier>| <typedef-name>
<结构声明> -> <说明限定符> <结构说明符列表>
<说明限定符> -> <类型说明符> | <类型限定符>
<指针> -> "*" <类型限定符>* {<指针>}?
<类型限定符> -> "常量"| "volatile"
<直接说明符> -> <标识符> | “(”<声明符>“)” | <直接说明符>“[”{<常量表达式>}? “]” | <直接说明符>“(”<参数类型列表>“)” | <直接说明符>“(”{<标识符>} *“)”
<常量表达式> -> <条件表达式>
<条件表达式> -> <逻辑或表达式> | <逻辑或表达式>“?” <表达式>“:”<条件表达式>
<逻辑或表达式> -> <逻辑和表达> | <逻辑或表达式“||” <逻辑和表达>
<逻辑和表达> -> <包容性,或表达> | <逻辑和表达“&&”<包容性,或表达>
<含-或表达式> -> <异或表达> | <包容性,或表达>“|” <异或表达>
<单独或表达式> -> <和表达> | <单独或表达>“^”<和表达>
<和表达式> -> <平等表达> | <和表达>“&”<平等表达>
<平等表达式> -> <关系表达式>| <平等表达>“==”<关系表达式>| <平等表达>“!=”<关系表达式>
<关系表达式> -> <移位表达式>| <关系表达式>“<”<移位表达式>| <关系表达式>“>”<移位表达式>| <关系表达式>“<=”<移位表达式>| <关系表达式>“> =”<移位表达式>
<移位表达式> -> <添加剂表达>| <移位表达式>“<<”<添加剂表达>| <移位表达式>“>>”<添加剂表达>
<添加剂表达式> -> <乘法表达式>| <添加剂表达>“+”<乘法表达式>| <添加剂表达式>“ - ”<乘法表达式>
<乘法表达式> -> <铸表达>| <乘法表达式>“*”<投表达式>| <乘表达>“/”<投表达式>| <乘法表达式>“%”<投表达式>
<投表达式> -> <一元表达式>| “(”<类型名>“),”<铸表达>
<一元表达式> -> <后缀表达式>| “++”<一元表达式>| “ - ”<一元表达式>| <一元算子> <铸表达>| “sizeof的”<一元表达式>| “sizeof的”<类型名称>
<后缀表达式> -> <主表达式>| <后缀表达式>“[”<表达式>“]”| <后缀表达式>“(”{<赋值表达式>} *“)”| <后缀表达式>“。” <标识符>| <后缀表达式>“ - >”<标识>| <后缀表达式>“++”| <后缀表达式>“ - ”
<基本表达式> -> <标识符>| <常数>| <字符串>| “(”<表达式>“)”
<常数> -> <整型常量>| <字符常量>| <float 常量>| <enumeration-constant>
<表达式> -> <赋值表达式>
| <表达式>“,”<赋值表达式>
<赋值表达式> -> <条件表达式>
| <一元表达式> <赋值运算符> <赋值表达式>
<赋值运算符> -> “=”| “* =”| “/ =”| “%=”| “+ =”| “ - =”| “<< =”| “>> =”| “&=”| “^ =”| “| =”
<一元操作符> -> “&”| “*”| “+”| “ - ”| “?”| “!”
<类型名> -> {<说明限定符>} + {<抽象声明符>}
<参数类型列表> -> <参数列表>| <参数列表>“,”...
<参数列表> -> <参数声明>| <参数列表>“,”<参数声明>
<参数声明> -> {<声明说明符>} + <说明符>| {<声明说明符>} + <抽象说明符>| {<声明说明符>} +
<抽象声明符> - > <指针>| <指针> <直接抽象说明符>| <直接抽象说明符>
<直接抽象说明符> -> (<抽象说明符>)| {<直接抽象说明符>}? “[”{<常量表达式>}? “]”| {<直接抽象说明符>}? “(”{<参数类型列表>?|“)”
<枚举说明> -> “枚举”<标识>“{”<枚举列表>“}”| “枚举数”,“{”<枚举列表>“}”| “枚举数”<标识>
<枚举列表> -> <枚举数>| <枚举列表>“,”<枚举数>
<枚举数> -> <标识符>| <标识>“=”<常量表达式>
<类型定义名称> -> <标识符>
<声明> -> {<声明说明符>} + {<初始化声明符>} *
<初始化声明符> -> <说明符>| <声明符>“=”<初始化>
<初始化> -> <赋值表达式>| “{”<初始化列表>“}”| “{”<初始化列表>“,”“}”
<初始化列表> -> <初始化>| <初始化列表>“,”<初始化>
<复合语句> -> “{”{<申报>} * {<语句>} *“}”
<语句> -> <标记语句>| <表达式语句>| <复合语句>| <选择语句>| <循环语句>| <跳转语句>
<标记语句> -> <标识符>“:”<语句>| “case”<常量表达式>“:”<语句>| “default”“:”<语句>
<表达式语句> -> {<表达式>}? “;”
<选择语句> -> “if”“(”<表达式>“),”<语句>| “if”“(”<表达式>“),”<语句>“else”<声明>| “switch”“(”<表达式>“),”<语句>
<循环语句> -> “while”“(”<表达式>“)”<语句>| “do”<语句>“,while”“(”<表达式>“)”“;”| “for”“(”{<表达式>}?“;”{<表达式>}?“;”{<表达式>}“)”<语句>
<跳转语句> -> “goto”<标识>“;”| “continue”“;”| “break”“;”| “return”{<表达式>}? “;”
原文:http://www.cnblogs.com/cjh123/p/4918045.html