<程序> —〉 <外部声明> | <函数定义>
<外部声明> —〉<头文件> | <变量> | <结构体> 
<头文件> —〉 #include<文件名>
<文件名> —〉 stdio.h丨stdlib.h丨string.h
<结构体> —〉 <结构体声明〉|<变量>
<结构体声明> —〉 struct<标识符>
<函数定义> —〉 <类型说明><标识符><参数列表><复合语句>
<参数列表〉 —〉<类型说明><变量名>
<复合语句> —〉<变量>|<语句>|<复合语句>|&
<语句> —〉<表达式语句〉|<选择语句>|<循环语句>|<跳跃语句>|<语句>|&
<表达式语句> —〉 <赋值表达式>|<关系表达式>|<逻辑表达式>|<表达式语句>|&
<赋值表达式> —〉  =A/A=
        A —>  &|+|-
<关系表达式> —>  〉| < | 〉=| <=     
<逻辑表达式> —〉 + | - | * | / 
<选择语句> —〉 if else语句|switch语句|<选择语句>|&            
<循环语句> —〉 for语句|while语句|do while语句|<循环语句>|&          
<跳跃语句> —> return语句|break语句|continue语句
<变量>  —>  <类型>丨<标识符>丨<变量值>
<类型说明>  —>  int丨char丨double丨float丨long 
<变量值>  —>  <字母>丨〈数字〉
<标识符> 〈==〉  S
         S —> AS1
         S1 —> S1S2
         S2 —> A|B|&
         A —>  a|b|c|……y|z
         B —>  0|1|2|3|4|5|6|7|8|9
<字母>   —>  a|b|c|……y|z
<数字> 〈==〉  S
         S —>  AS1
         S1 —> S1AS2
         S2 —> &|0
         A —>  1|2|3|4|5|6|7|8|9 
原文:http://www.cnblogs.com/Ming-jay/p/6126952.html