(1)<程序>::=<文件头>|<函数>
(2)<文件头>::=<库函数>
(3)<函数>::=<库函数>|<用户自定义函数>|<函数主体>
(4)<库函数>::=<#include<stdio.h>>|<#define>....
(5)<用户自定义函数>::=< yizhi>|<>....
(6)<函数主体>::=<语句串><选择结构>
(7)<语句串>::=<循环语句>|<条件语句>|<表达式语句> |<数组>|<指针>|<数据类型>|<数字>|<结构体>|<选择结构>|<变量>|<常量>|<运算符>|<符号>|<关键字>|<字符>
(8)<选择结构>::=<单分支结构>|<分支结构>|<多分支结构>|<嵌套结构>
(9)<循环语句>::=<for>|<do while>|<while>
(10)<条件语句>::=< if语句> | <if-else语句> | <switch语句>
(11)< if语句>::=<if (表达式语句) {可执行语句部分}>
(12)<if-else语句>::=<if (表达式语句) {可执行语句部分} else {可执行语句部分}>
(13)<switch语句>::=<switch(变量){ switch语句块 }>
(14)<switch语句块>::=< case 常量: 可执行语句部分> | < default: 可执行语句部分> | < case 常量: 可执行语句部分> <switch语句块>
(15)<表达式语句> → <赋值表达式> | <逻辑表达式> | <算术表达式 E>
(16)<赋值表达式> → <变量> = <算术表达式>
(17)<逻辑表达式> → (<表达式> | <数字> ) <逻辑运算符> (<表达式> | <数字>)
E → T|TE `
E` → (+T|-T)E`|ε
T → F|FT `
T `→( *F| /F)T`|ε
F → PF`
F` → (↑ P | ε)F`
P (E) | <常量> | <标识符>
(18)<逻辑运算符> → > | < | != | <= | >= | = = | ? | : | ! | || | &&
(19)<数组>::=<数值数组>|<字符数组>
(20)<数值数组>::=<一维数组>|<二维数组>
(21)<字符数组>::=<字符串>|<字符串数组>
(22)<指针>::=<函数指针>|<数组指针> | <字符串指针>| <指向指针的指针>
(23)<数据类型>::=<整型>|<实型> | <字符型>| <无返回型>
(24)<数字>::=<0,1,2,3,4,5,6,7,8,9...>
(25)<结构体>::=<结构体数组>| <结构体指针>| <链表>
(26)<变量>::=<整型|<实型>|<字符型>
(27)<常量>::=<整型|<实型>|<字符型>
(28)<运算符>::=<单目运算符>|<双目运算符>|<三目运算符>|<逗号运算符>
(29)单目运算符::=<逻辑非运算符【!】>|<自增自减运算符【++,--】>|<负号运算符【-】>|<类型转换运算符【(类型)】>|<指针运算符【*】>|<取地址运算符【&】>|<长度运算符
【sizeof】>
(30)双目运算符::=<算术运算符【+,-,*,/】>|<关系运算符【==,!=,>,<,>=,<=】>|<逻辑运算符【&&,||】>|<赋值运算符【=,+=,-=,*=,/=,%=】>|<位运算符【&,^,|,<<,>>】>
(31)逗号运算符::=<【,】>
(32)<三目运算符>::=<【?:】>
(33)<符号>::=<, . ; : ? % & [ ] { } ""...>
(34)<关键字>::=<begin,end,if,else,do,while,var,auto,break,char,case,int,struct,switch,return,float,static,union,unsigned...>
(35)<字符>::=<abc...xyz,ABC...XYZ>