C语言文法

源程序 → 外部声明 | 子程序(外部声明)

外部声明   → 函数定义| 函数声明

函数定义 → 类型标识符(复合句)

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

整型→ 长整型 | 短整型 | 无符号整型

声明→ 指针直接声明| 直接声明

指针 → * | * 指针

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

标识符列表→标识符 | (标识符列表 ,标识符)

常数表达式→ 条件表达式

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

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

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

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

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

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

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

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

语句列表→ 语句| 语句列表

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

表达式语句→ 表达式;

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

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

跳转语句| continue; |breack; | return; | return 表达式;

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

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

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

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

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

或运算表达式→异或表达式 |或运算表达式‘|异或表达式

相等表达式→关系表达式|相等表达式 等于运算 关系表达式| 相等表达式 不等于运算 关系表达式

关系表达式→替换表达式|关系表达式 替换表达式|关系表达式 替换表达式| 关系表达式<=替换表达式| <关系表达式>=替换表达式

替换表达式→加法表达式| 减法表达式| 乘法表达式

加法表达式→乘法表达式>| (加法表达式 + 乘法表达式)|(加法表达式 - 乘法表达式)

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

基本表达式→ 标识符 | 常量 | 字符串|(表达式)

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

赋值运算符→ =| 乘法赋值 | 除法赋值|求余赋值|加法赋值|减法赋值|左赋值 |右赋值|与赋值|异或赋值|或赋值

储存类说明符→typedef(定义类型)| <extern(外部变量)| <static(静态)| auto(自动)| register(寄存器)

说明符限定符列表→类型说明符 说明符限定符列表 | 类型说明符| 类型限定符 说明符限定符列表 |类型限定符

结构说明符列表→结构说明符|(结构说明符列表 , 结构说明符)

结构说明符 → 说明符 | (:常数表达式) | (说明符 : 常数表达式)

类型限定符 → 常量| 变量

标记语句→ (标识符 : 语句)| case (常数表达式 : 语句) | default(语句)

C语言文法的更多相关文章

  1. 1014 C语言文法定义与C程序的推导过程 程序:冒泡算法C程序(语法树)

    阅读并理解提供给大家的C语言文法文件. 参考该文件写出一个自己好理解版的现实版的完整版的C语言文法. 给出一段C程序,画出用上述文法产生这段C程序的完整语法树. 程序:冒泡算法C程序 点此文字查看原图 ...

  2. 1029 C语言文法定义与C程序的推导过程

    1 阅读并理解提供给大家的C语言文法文件. 2 参考该文件写出一个自己好理解版的现实版的完整版的C语言文法. 3 给出一段C程序,写出用上述文法产生这段C程序的推导过程. program → exte ...

  3. 我的mini_c语言文法设计

    //这个文件主要是用来描述当前源语言的词法结构和语法结构 //当前语言是c语言的一个子集,因此里面所有的描述大家都很熟悉 //注意,当前语言并不支持预处理,因为c预处理比较复杂,而且楼主能力低下,因此 ...

  4. 消除左递归c语言文法

    <程序> -〉 <外部声明> | <函数定义><外部声明> -〉<头文件> | <变量> | <结构体> <头 ...

  5. 简单的C语言文法

    <程序>→<外部声明>|<程序><外部声明> <外部声明>→<函数定义>|<声明> <函数定义>→< ...

  6. 实验二 c语言文法

    <程序>-><声明>|<程序><函数> <函数>-><修饰符><标识符><形式参数>< ...

  7. c语言文法简化版文法

    <源程序>→<外部声明>|<外部声明><函数体> <外部申明>→<头文件><函数声明>|其他声明 <函数体&g ...

  8. 简化C语言文法

    程序 → 外部声明|程序 外部声明 外部声明 → 定义函数|定义 函数定义 → 类型标识符 声明部分语句 类型标识符 → 空类型|字符型|整型|浮点型 声明部分语句 → 指针 直接声明|直接声明 指针 ...

  9. 简化版c语言文法

    <程序> → <外部声明> | <程序的外部声明> <标识符类型> → <无类型> | <字符> | <整型> | ...

随机推荐

  1. .NET Core采用的全新配置系统[1]: 读取配置数据

    提到“配置”二字,我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化的配置定义在这两个文 ...

  2. SQL Server-聚焦使用索引和查询执行计划(五)

    前言 上一篇我们讲了聚集索引对非聚集索引的影响,对数据库一直在强调的性能优化,所以这一节我们统筹讲讲利用索引来看看查询执行计划是怎样的,简短的内容,深入的理解,Always to review the ...

  3. Hibernate中的锁机制

    锁机制:是数据库为了保证数据的一致性<一个事务的各种操作不相互影响>而使各种共享资源在被并发访问访问变得有序所设计的一种规则,用来保证在当前用户进行操作数据的时候其他的用户不能对同一数据进 ...

  4. 剖析并利用Visual Studio Code在Mac上编译、调试c#程序

    0x00 前言 一周多以前的微软的Build大会上,微软发布了一个让很多人眼前一亮的工具,也是本文的主角——Visual Studio Code.很多使用Windows的朋友都很高兴,认为又多了一个很 ...

  5. LINQ to SQL语句(19)之ADO.NET与LINQ to SQL

    它基于由 ADO.NET 提供程序模型提供的服务.因此,我们可以将 LINQ to SQL 代码与现有的 ADO.Net 应用程序混合在一起,将当前 ADO.NET 解决方案迁移到 LINQ to S ...

  6. DataNavigatorButtons

    备注 您可以访问使用该控件的DataNavigator.Buttons属性显示在一个的DataNavigator控制按钮设置.该属性的返回值是一个DataNavigatorButtons对象. 下图说 ...

  7. jquery禁用下拉框

    禁用下拉框 //下拉框禁用 $("select").each(function () { $("#" + this.id).attr("disable ...

  8. Mysql FROM_UNIXTIME效率 VS PHP date()效率 数据说话!

    这几天在做数据统计,有几个统计图的需求是这样的: 按照年.月.日统计订单数量, 比方一年12个月,统计出1月多少订单,二月多少订单,按照这种模式统计. 但是数据库里存放的是 timestamp  的  ...

  9. spider 配置文件参考

    spider有一个配置文件spider.xml,为xml格式,spider.xml采用DTD进行管理,用于管理spider的所有特性.路由.高可用等. 配置文件支持三种不同的方式进行指定: 1. 通过 ...

  10. 设计模式03备忘录(java)

    先贴代码有空来写内容. 备忘录1 //简单的备忘录,只可以记录上一次修改前的状态,实现撤回一次的操作. class Student{ private String name; private Stri ...