程序-> <外部声明><程序><外部声明>
外部声明-> <函数定义>|<声明>
函数定义-> <函数类型><说明符><复合语句>
函数类型-> void|char|int|float
说明符-> <指针 ><直接说明符>|<直接说明符>
指针-> <*>|<*><指针>
直接说明符-> <标识符>|<直接说明符[]>|<直接说明符[常量表达式]>|<标识符(参数序列)>|<标识符()>|<直接说明符,标识符序列>
标识符序列-> <标识符>|<标识符序列><,><标识符>
常量表达式-> <条件表达式>
参数序列-> <参数声明>|<参数声明><,><参数声明>
参数声明-> <声明说明符><声明符>
复合语句-> <{}>|<{<陈述序列>}>|<{<声明序列><陈述序列>}>
声明序列-> <声明符>|<声明序列><声明符>
声明符-> <初始化说明符>|<初始化说明符><,><初始化说明符>
初始化说明符-> <说明符>|<说明符><=><初始化程序>
初始化程序-> <赋值表达式>|<{<初始化序列>}>|<{<初始化序列><,>}>
初始化序列-> <初始化程序>|<初始化序列><,><初始化>
陈述序列-> <陈述语句>|<陈述序列><陈述语句>
陈述语句-> <复合语句>|<表达式语句>|<选择语句>|<循环语句>|<转移语句>
表达式语句-> <;>|<表达式><;>
选择语句-> IF(<表达式>)<陈述语句>|IF(<表达式>)<陈述语句>ELSE<陈述语句>
循环语句->WHILE(<表达式>)<陈述语句>|FOR(<表达式语句><表达式语句>)<陈述语句>|FOR(<表达式语句><表达式语句><陈述语句>)<陈述语句>
转移语句->CONTINUE;| BREAK; | RETURN; | RETURN <表达式>;
表达式-><任务表达式>|<表达式>;<任务表达式>
任务表达式-><条件表达式>|<一元运算符><赋值运算符><任务表达式>
条件表达式-><OR表达式>|<OR表达式>?<表达式>:<条件表达式>
OR表达式-><AND表达式>|<OR表达式>OR_OP<AND表达式>
AND表达式-><包含OR表达式>|<AND表达式>AND_OP<包含OR表达式>
包含OR表达式-><单独OR表达式>|<包含OR表达式>'|'<单独OR表达式>
单独OR表达式-><AND表达式>|<单独OR表达式>'^'<AND 表达式>
AND 表达式-><赋值表达式>|<AND表达式>'&'<赋值表达式>
赋值表达式-><关系式>|<赋值表达式>EQ_OP<关系式>|<赋值表达式>NE_OP<关系式>
关系式-><位移表达式>|<关系式>'<'<位移表达式>|<关系式>'>'<位移表达式>|
<关系式>LE_OP<位移表达式>|<关系式>GE_OP<位移表达式>
位移表达式-><相加表达式>|<位移表达式>LEFT_OP<相加表达式>|
<位移表达式>RIGHT_OP<相加表达式>
相加表达式-><乘法表达式>|<相加表达式>'+'<乘法表达式>|<相加表达式>'-'<乘法表达式>
乘法表达式-><计算表达式>|<乘法表达式>'*'<计算表达式>|
<乘法表达式>'/'<计算表达式>|<乘法表达式>'%'<计算表达式>
计算表达式-><一元表达式>|(<类型名>)<计算表达式>
一元表达式-><后缀表达式>