简化C语言文法

程序 → 外部声明|程序 外部声明

函数定义 → 类型标识符 声明部分语句

类型标识符 → 空类型|字符型|整型|浮点型

声明部分语句 → 指针 直接声明|直接声明

指针 → * |* 指针

直接声明 → 标识符 | 直接声明[ ] | 直接声明[常数表达式] | 标识符(参数列表) | 标识符() | 直接声明 ,标识符列表

标识符 → 下划线 标识符|字母 标识符|数字|字母|下划线

常数表达式 → 条件表达式

参数列表 → 参数声明 | 参数列表 ,参数声明

参数声明 → 说明符声明 标识符

语句 → 复合语句 | 表达式语句 | 选择语句 | 循环语句

复合语句 → { } | { 语句列表 } | { 声明列表 语句列表 }

声明列表 → 声明 | 声明列表 声明

声明 → 初始化声明 | 初始化声明列表 ,初始化声明

初始化声明 → 声明 | 声明=初始化程序

初始化程序 → 表达式 | {初始化程序列表} | {初始化程序列表 , }

初始化程序列表 → 初始化程序 | 初始化程序列表 , 初始化程序

表达式语句  → 表达式;

表达式 → 赋值表达式 | 表达式, 赋值表达式

赋值表达式 → 条件表达式| 一元表达式 赋值操作符 赋值表达式

条件表达式 → 逻辑‘或’表达式 | 逻辑‘或’表达式 ? 表达式: 条件表达式

逻辑‘与’表达式 → 逻辑‘或’表达式 | 逻辑‘与’表达式 ‘与’运算 逻辑‘或’表达式

一元表达式 → 加一运算 一元表达式 | 减一运算 一元表达式|一元运算符 强制转换表达式

一元运算符 → & | * | + | - | !

强制转换表达式 → 一元表达式 | (类型名称)强制转换表达式

赋值运算符 → = | 乘法赋值 | 除法赋值 | 求余赋值 | 加法赋值 | 减法赋值

选择语句  → IF(表达式)语句 |  IF(表达式)语句   ELSE 语句

循环语句  → WHILE(表达式)语句 |  FOR(表达式语句;表达式语句)语句 |  FOR(表达式语句;表达式语句;表达式)语句

加法表达式 → 乘法表达式 | 加法表达式 + 乘法表达式 | 加法表达式 - 乘法表达式

乘法表达式 → 强制转换表达式 | 乘法表达式 * 强制转换表达式 | 乘法表达式 / 强制转换表达式 | 乘法表达式 % 强制转换表达式

原文地址:https://www.cnblogs.com/SOLARLKS/p/6009507.html