C语言文法
C语言文法
源程序 → 外部声明 | 子程序(外部声明)
外部声明 → 函数定义| 函数声明
函数定义 → 类型标识符(复合句)
标识符类型 → 无类型 | 字符型 | 整型 | 浮点型
整型→ 长整型 | 短整型 | 无符号整型
声明→ 指针直接声明| 直接声明
指针 → * | * 指针
直接声明→ 标识符| 直接声明[ ]| 直接声明[常量表达式]| 标识符(参数列表)| 标识符() | (直接声明 , 标识符列表)
标识符列表→标识符 | (标识符列表 ,标识符)
常数表达式→ 条件表达式
参数列表→ 参数声明| (参数列表 ,参数声明)
参数声明→ 说明符声明,标识符
复合语句 → { } | { 语句列表 } | { 声明列表 语句列表 }
声明列表→ 声明 | 声明列表 声明
声明→初始化声明| (初始化声明列表 ,初始化声明)
初始化声明 → 声明| 声明=初始化程序
初始化程序 → 表达式 | {初始化程序列表} | {初始化程序列表 , }
初始化程序列表 → 初始化程序 | (初始化程序列表 , 初始化程序)
语句列表→ 语句| 语句列表
语句→语句| 复合语句 | 表达式语句 | 选择语句|循环语句|跳转语句
表达式语句→ 表达式;
选择语句→ IF(表达式)语句| IF(表达式)语句 | ELSE 语句
循环语句→ WHILE(表达式)语句 | FOR(表达式语句;表达式语句)| FOR(表达式语句;表达式语句;表达式语句)
跳转语句| continue; |breack; | return; | return 表达式;
表达式→赋值表达式|(表达式, 赋值表达式)
赋值表达式→条件表达式|一元表达式 (赋值操作符)赋值表达式
条件表达式 → 逻辑‘或’表达式|逻辑‘或’表达式?表达式:条件表达式
逻辑‘或’表达式→逻辑‘与’表达式 |逻辑‘或’表达式‘或’运算|逻辑‘与’表达式
逻辑‘与’表达式→ 逻辑‘或’表达式|逻辑‘与’表达式‘与’运算(逻辑‘或’表达式)
或运算表达式→异或表达式 |或运算表达式‘|异或表达式
相等表达式→关系表达式|相等表达式 等于运算 关系表达式| 相等表达式 不等于运算 关系表达式
关系表达式→替换表达式|关系表达式 替换表达式|关系表达式 替换表达式| 关系表达式<=替换表达式| <关系表达式>=替换表达式
替换表达式→加法表达式| 减法表达式| 乘法表达式
加法表达式→乘法表达式>| (加法表达式 + 乘法表达式)|(加法表达式 - 乘法表达式)
乘法表达式→强制转换表达式| (乘法表达式 * 强制转换表达式)| (乘法表达式 / 强制转换表达式)|(乘法表达式 % 强制转换表达式)
基本表达式→ 标识符 | 常量 | 字符串|(表达式)
一元运算符→& | * | + |- | ~ | !
赋值运算符→ =| 乘法赋值 | 除法赋值|求余赋值|加法赋值|减法赋值|左赋值 |右赋值|与赋值|异或赋值|或赋值
储存类说明符→typedef(定义类型)| <extern(外部变量)| <static(静态)| auto(自动)| register(寄存器)
说明符限定符列表→类型说明符 说明符限定符列表 | 类型说明符| 类型限定符 说明符限定符列表 |类型限定符
结构说明符列表→结构说明符|(结构说明符列表 , 结构说明符)
结构说明符 → 说明符 | (:常数表达式) | (说明符 : 常数表达式)
类型限定符 → 常量| 变量
标记语句→ (标识符 : 语句)| case (常数表达式 : 语句) | default(语句)
C语言文法的更多相关文章
- 1014 C语言文法定义与C程序的推导过程 程序:冒泡算法C程序(语法树)
阅读并理解提供给大家的C语言文法文件. 参考该文件写出一个自己好理解版的现实版的完整版的C语言文法. 给出一段C程序,画出用上述文法产生这段C程序的完整语法树. 程序:冒泡算法C程序 点此文字查看原图 ...
- 1029 C语言文法定义与C程序的推导过程
1 阅读并理解提供给大家的C语言文法文件. 2 参考该文件写出一个自己好理解版的现实版的完整版的C语言文法. 3 给出一段C程序,写出用上述文法产生这段C程序的推导过程. program → exte ...
- 我的mini_c语言文法设计
//这个文件主要是用来描述当前源语言的词法结构和语法结构 //当前语言是c语言的一个子集,因此里面所有的描述大家都很熟悉 //注意,当前语言并不支持预处理,因为c预处理比较复杂,而且楼主能力低下,因此 ...
- 消除左递归c语言文法
<程序> -〉 <外部声明> | <函数定义><外部声明> -〉<头文件> | <变量> | <结构体> <头 ...
- 简单的C语言文法
<程序>→<外部声明>|<程序><外部声明> <外部声明>→<函数定义>|<声明> <函数定义>→< ...
- 实验二 c语言文法
<程序>-><声明>|<程序><函数> <函数>-><修饰符><标识符><形式参数>< ...
- c语言文法简化版文法
<源程序>→<外部声明>|<外部声明><函数体> <外部申明>→<头文件><函数声明>|其他声明 <函数体&g ...
- 简化C语言文法
程序 → 外部声明|程序 外部声明 外部声明 → 定义函数|定义 函数定义 → 类型标识符 声明部分语句 类型标识符 → 空类型|字符型|整型|浮点型 声明部分语句 → 指针 直接声明|直接声明 指针 ...
- 简化版c语言文法
<程序> → <外部声明> | <程序的外部声明> <标识符类型> → <无类型> | <字符> | <整型> | ...
随机推荐
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(16)-权限管理系统-漂亮的验证码
系列目录 我们上一节建了数据库的表,但我发现很多东西还未完善起来,比如验证码,我们先做好验证码吧,验证码我们再熟悉不过了,为了防止恶意的登录,我们必须在登录页面加入验证码,下面我将分享一个验证码,这个 ...
- 分享个 之前写好的 android 文件流缓存类,专门处理 ArrayList、bean。
转载麻烦声明出处:http://www.cnblogs.com/linguanh/ 目录: 1,前序 2,作用 3,特点 4,代码 1,前序 在开发过程中,client 和 server 数据交流一 ...
- js的OOP继承实现
以下视频截图均来自慕课网javascript深入浅出: 这里Student.prototype之所以使用create方法来创建,而不是直接赋Person.prototype的值,是因为如果使用赋值的话 ...
- c#+handle.exe实现升级程序在运行时自动解除文件被占用的问题
我公司最近升级程序经常报出更新失败问题,究其原因,原来是更新时,他们可能又打开了正在被更新的文件,导致更新文件时,文件被其它进程占用,无法正常更新而报错,为了解决这个问题,我花了一周时间查询多方资料及 ...
- 1.ASP.NET MVC使用EPPlus,导出数据到Excel中
好久没写博客了,今天特地来更新一下,今天我们要学习的是如何导出数据到Excel文件中,这里我使用的是免费开源的Epplus组件. 源代码下载:https://github.com/caofangshe ...
- android 模拟2048
利用节日休息时间在ANDROID上进行学习并模拟2048游戏. 效果如下图: 制作思路: 1.画出2048游戏主界面,根据手机屏幕宽高度进行计算并画出每个方块的大小. @Override protec ...
- Rafy 框架 - 使用 SqlTree 查询
本文介绍如何使用 Rafy 框架中的 Sql Tree 查询: 除了开发者常用的 Linq 查询,Rafy 框架还提供了 Sql 语法树的方式来进行查询. 这种查询方式下,开发者不需要直接编写真正的 ...
- Get radio selected value
先看下面 foreach得到的radio list: 现在想实现把选择的选项值Post至服务端:
- 在公有云AZURE上部署私有云AZUREPACK以及WEBSITE CLOUD(四)
(四)搭建Website Cloud环境 1安装CONTROLLER主机 在开始安装Web site Cloud之前,读者应该对该服务的拓扑结构有个大概了解. 如图: Controller是非常重要的 ...
- 初识Spring框架实现IOC和DI(依赖注入)
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的, IoC是 ...