C语言文法
<程序> →<外部声明>|<程序><外部声明>
<外部声明> →<函数定义>|<声明>
<函数定义> → <类型说明符><声明符><复合语句>
<类型说明符> →<VOID>|<CHAR>|<INT>|<FLOAT>
<声明符> →<指针直接声明符>|<直接声明符>
<指针> →<'*'>|<' *' 指针>
<直接声明符>→<标识符><直接声明符 '['']'><直接声明符 '[' 常量表达式']'>|<标识符 (参数列表)>|<标识符 '(' ')'>|<直接声明符 ',' 标识符列表>
<标识符列表><: 标识符>|<标识符列表','标识符>
<常数表达式> →<条件表达式>
<参数列表> →<参数声明>|<参数列表 ',' 参数声明>
<参数声明> →<声明说明符><标识符>
<复合语句> →<'{' '}'>|<' {' 语句列表 '}'>|<' {' 声明语句列表 '}'>
<声明列表> →<声明>|<声明列表><声明>
<声明> →<初始化声明符>|<初始化声明符列表 ',' 初始化声明符>
<初始化声明符> →<声明符>|<声明符 '=' 初始值设定项>
<初始值设定项> →<赋值表达式>|<' {' 初始值设定项列表 '}'>|<' {'初始值设定项列表',' '}'>
<初始值设定项列表> →<初始值设定项>|<初始值设定项列表 ',' 初始值设定项>
<语句列表> →<声明>|<语句列表>
<语句> →|<复合语句>|<表达式语句>|<选择语句>|<迭代语句>|<跳转语句>
<表达式语句> →<';'>|<表达式 ';'>
<选择语句><: IF '(' 表达式')' 语句>|<IF '(' 表达式')' 语句的 ELSE 语句>
<迭代语句> →<WHILE '(' 表达式')' 语句>|<FOR'(' 表达式语句表达式语句')' 语句>|<FOR'(' 表达式语句表达式语句表达式')' 语句>
<跳转语句>|<继续 ';'>|<打破;><返回 ';'>|<返回表达式 ';'>
<表达式><: 赋值表达式>|<表达式 ',' 赋值表达式>
<赋值表达式> →<条件表达式>|<一元表达式><赋值运算符><赋值表达式>
<条件表达式 >→<逻辑或表达式>|<逻辑或表达式 '? '表达':' 条件表达式>
<逻辑或表达式 >→<逻辑和表达>|<逻辑或逻辑 OR 运算表达式和表达式>
<逻辑和表达>: <包容性或表达式>|<逻辑和具有包容性和 OP 表达式>
<包容性或表达> →<异或表达式><包容性或表达式 ' |' 异或表达式>
<异或表达式>: <与表达式>|<异或表达式 ' ^' 和表达式>
<和表达式>: <相等表达式>|<和表达式 '&' 相等表达式>
<相等表达式>: <关系表达式>|<相等表达式情商 OP 关系表达式>|<相等表达式 NE OP 关系表达式>
<关系表达式>: <转移表达式>|<关系表达式 ' <' 转移表达式>|<关系表达式 ' >' 转移表达式>|<关系表达式LE OP 转变表达式>|<关系表达式 GE OP 转变表达式>
<转变表达式>: <加法表达式>|<转变表达式 LEFT OP 加法表达式>|<转变表达式 RIGHT OP 加法表达式>
<加法表达式>: <乘法表达式>|<加法表达式 '+' 乘法表达式>|<加法表达式 '-' 乘法表达式>
<乘法表达式>: <表达式转换>|<乘法表达式 ' *' 表达式转换>|<乘法表达式 '/' 强制转换表达式>|<乘法表达式 '%' 强制转换表达式>
<强制转换表达式>: <一元表达式>|<'(' 键入名称')' 强制转换表达式>
<一元表达式>: <后缀表达式>|<INC OP 一元表达式>|<DEC OP 一元表达式>|<一元运算符强制转换表达式>|<一元的 SIZEOF 表达式>|<SIZEOF '(' 类型名称')'>
<后缀表达式> →: <主要表达式>|<后缀表达式 '[' 表达']'>|<后缀表达式 '(' ')'>|<后缀表达式 '(' 参数表达式列表')'>|<后缀表达式 '.'标识符>|<后缀表达式 PTR OP 标识符>|<后缀表达式 INC OP>|<后缀表达式 DEC OP>
<主要表达式> →<标识符>|<恒定>|<字符串型>|<' (' 表达式 ')'>
<参数表达式列表>: <赋值表达式>|<参数表达式列表 ',' 赋值表达式>
<一元运算符>: <'&'>|<'*'>|<'+'>|<'-'>|<'~'>|<'!'>
<赋值运算符> → <'='>|<MUL 分配>|<DIV 分配>|<MOD 分配>|<ADD 分配>|<SUB 分配>|<LEFT 分配>|<RIGHT分配>|<AND 分配>|<XOR 分配>|<OR 分配>
<存储类说明符> → <定义类型>|<外来的>|<静态>|<自动>
<结构或联合的说明符>: <结构或联合标识符' {' 结构声明列表 '}'>|<结构或联合 ' {' 结构声明列表 '}'>|<结构或联合的标识符>
<结构或联合>:< 结构>|<联合>
<结构声明列表>: <结构声明>|<结构声明列表结构声明>
<结构声明>: <说明符限定符列表结构声明符列表 ';'>
<说明符限定符列表> →<类型说明符说明符限定符列表中>|<类型说明符>|<类型限定符说明符限定符列表中>|<类型限定符>
<结构声明符列表 >→<结构声明符>|<结构声明符列表 ',' 结构声明符>
<结构声明符> →: <声明符>|<':' 常量表达式|声明符 ':' 常量表达式>
<enum 说明符 >→<枚举 ' {' 枚举数列表 '}'>|<ENUM 标识符 {' 枚举数列表 '}'|<ENUM 标识符><枚举数列表 >→<枚举数>|<枚举数列表 ',' 枚举器>
<枚举数 >→<标识符>|<标识符 '=' 常量表达式>
<类型限定符> →<常量>|<变量>
<类型限定符列表> →<类型限定符>|<类型限定符列表类型限定符>
<参数类型列表> →<参数列表>|<参数列表 ',' 省略号>
<参数列表> →<: 参数声明>|<参数列表 ',' 参数声明>
<类型名称 >→<说明符限定符列表中>|<说明符限定符列表抽象声明符>
<抽象的声明符> →<指针>|<直接的抽象声明符>|<指针直接抽象声明符>
<直接的抽象声明符 >→ <' (' 抽象声明符 ')'>|<'[' ']'>|<'[' 常量表达式']'>|<直接抽象声明符 '['']'> |<直接抽象声明符 '[' 常量表达式']'>|<'(' ')'>|<' (' 参数类型列表 ')'> |<直接的抽象声明符 '(' ')'>|<直接抽象声明符 '(' 参数类型列表')'>
<标记的语句 >→<标识符 ':' 声明>|<case达式 ':' 声明>|<默认 ':' 声明>