程序 → 外部声明|程序 外部声明
函数定义 → 类型标识符 声明部分语句
类型标识符 → 空类型|字符型|整型|浮点型
声明部分语句 → 指针 直接声明|直接声明
指针 → * |* 指针
直接声明 → 标识符 | 直接声明[ ] | 直接声明[常数表达式] | 标识符(参数列表) | 标识符() | 直接声明 ,标识符列表
标识符 → 下划线 标识符|字母 标识符|数字|字母|下划线
常数表达式 → 条件表达式
参数列表 → 参数声明 | 参数列表 ,参数声明
参数声明 → 说明符声明 标识符
语句 → 复合语句 | 表达式语句 | 选择语句 | 循环语句
复合语句 → { } | { 语句列表 } | { 声明列表 语句列表 }
声明列表 → 声明 | 声明列表 声明
声明 → 初始化声明 | 初始化声明列表 ,初始化声明
初始化声明 → 声明 | 声明=初始化程序
初始化程序 → 表达式 | {初始化程序列表} | {初始化程序列表 , }
初始化程序列表 → 初始化程序 | 初始化程序列表 , 初始化程序
表达式语句 → 表达式;
表达式 → 赋值表达式 | 表达式, 赋值表达式
赋值表达式 → 条件表达式| 一元表达式 赋值操作符 赋值表达式
条件表达式 → 逻辑‘或’表达式 | 逻辑‘或’表达式 ? 表达式: 条件表达式
逻辑‘与’表达式 → 逻辑‘或’表达式 | 逻辑‘与’表达式 ‘与’运算 逻辑‘或’表达式
一元表达式 → 加一运算 一元表达式 | 减一运算 一元表达式|一元运算符 强制转换表达式
一元运算符 → & | * | + | - | !
强制转换表达式 → 一元表达式 | (类型名称)强制转换表达式
赋值运算符 → = | 乘法赋值 | 除法赋值 | 求余赋值 | 加法赋值 | 减法赋值
选择语句 → IF(表达式)语句 | IF(表达式)语句 ELSE 语句
循环语句 → WHILE(表达式)语句 | FOR(表达式语句;表达式语句)语句 | FOR(表达式语句;表达式语句;表达式)语句
加法表达式 → 乘法表达式 | 加法表达式 + 乘法表达式 | 加法表达式 - 乘法表达式
乘法表达式 → 强制转换表达式 | 乘法表达式 * 强制转换表达式 | 乘法表达式 / 强制转换表达式 | 乘法表达式 % 强制转换表达式