1012 C语言文法
源程序〉-〉<外部声明>|<源程序><外部声明>
<外部声明>-><定义函数>|<声明>
<函数定义>→<类型说明符> <声明符> <复合语句>
<说明符类型>→<无返回型> | <字符型> | <整型> | <浮点型>
<声明符> <指针> <直接声明符> | <直接声明符>
<指针>→<'*'> | <'*' 指针>
<直接声明符> <标识符> | <直接声明>[]| <直接声明><[常量表达式]> | <标识符>(参数表) | <标识符>() | <直接声明>,< 标识符列表>
<标识符列表>:<标识符> | <标识符列表>,<标识符>
<常量表达式>→<条件表达式>
<参数列表>→<参数声明> | <参数列表>,<参数声明>
<参数声明>→<说明符声明>< 标识符>
<复合语句>→'{''}'|'{'<语句列表>'}'|'{'<声明列表><语句列表>'}'
<声明列表>→<声明>|<声明列表><声明>
<声明>→<初始化声明符>|<初始化声明符列表>','<初始化声明符>
<初始化声明符>→<声明符>|<声明符>'='<初始化>
<初始化>→<赋值表达式>|'{'<初始化列表>'}'|'{'<初始化列表>',''}'
<初始化列表>→<初始化>|<初始化列表>','<初始化>
<语句列表>→<语句>|<语句列表><语句>
<语句>→<复合语句>|<表达式语句>|<选择语句>|<循环语句>|<跳转语句>
<表达式语句>→';'|<表达式>';'
<选择语句>→if'('<表达式>')'<语句>|if'('<表达式>')'<语句>else<语句>
<循环语句>→while'('<表达式>')'<语句>|for'('<表达式语句><表达式语句>')'<语句>|for'('<表达式语句><表达式语句><表达式>')'<语句>
<跳转语句>→continue';'|break';'|return';'|return<表达式>';'
<表达式>→<赋值表达式>|<表达式>','<赋值表达式>
<赋值表达式>→<条件表达式>|<一元表达式><赋值运算符><赋值表达式>
<条件表达式>→<逻辑或表达式>|<逻辑或表达式>'?'<表达式>':'<条件表达式>
<逻辑或表达式>→<逻辑与表达式>|<逻辑或表达式><或运算><逻辑与表达式>
<逻辑与表达式>→<或表达式>|<逻辑与表达式><与运算><或表达式>
<或表达式>→<异或表达式>|<或表达式>'|'<异或表达式>
<异或表达式>→<与表达式>|<异或表达式>'^'<与表达式>
<与表达式>→<等式>|<与表达式>'&'<等式>
<相等表达式>→<关系表达式> |< 相等表达式等于运算关系表达式 >|< 相等表达式不等于运算关系表达式>
<关系表达式>→<移位表达式> |< 关系表达式'<'移位表达式 >| <关系表达式'>'移位表达式> | <关系表达式小于等于运算移位表达式> | <关系表达式大于等于运算移位表达式>
<移位表达式>→<加法表达式> |< 移位表达式左运算加法表达式> | <移位表达式右运算加法表达式>
<加法表达式>→<乘法表达式 >|< 加法表达式'+'乘法表达式 >|< 加法表达式'-'乘法表达式>
<乘法表达式>→<强制转换表达式> | <乘法表达式'*'强制转换表达式> | <乘法表达式'/'强制转换表达式> | <乘法表达式'%'强制转换表达式>
<强制转换表达式>→<一元表达式> |< '(' 类型名称 ')'强制转换表达式>
<一元表达式>→<后缀表达式 >| <INC运算一元表达式> | <DEC运算一元表达式> |< 一元运算符将表达式> |< 结构体变量的一元表达式> | <结构体变量的'(' 类型名称 ')'><后缀表达式>→<基本表达式. | <后缀表达式'['表达式']'> | <后缀表达式'(' ')> |< 后缀表达式 '('参数表达式列表')'> | <后缀表达式'.' 标识符> | <后缀表达式指针运算标识符> | <后缀表达式INC运算> |< 后缀表达式DEC运算>
< 常量> | <字符串常量> |< '('表达式')'>
<参数表达式列表>→<赋值表达式> | <参数表达式列表','赋值表达式>
<一元运算符>→< '&'> |< '*'> |< '+'> |< '-'> |< '~' >| <'!'>
<赋值运算符>→<'=' >| <乘法分配> |< DIV分配> | <MOD分配> | <加法分配> | <SUB分配> | <左分配> |< 右分配> | <与分配> | <异或分配> | <或分配>
<存储类说明符>→<定义类型> | <外部变量 》| <静态> | <自动> | <寄存器>
<结构或联合说明符>→<结构或联合标识符'{'结构体声明列表'}'> |< 结构或联合'{'结构体声明列表'}'> | <结构或联合标识符>
<结构或联合>→<结构体> |< 联合>
<结构体声明列表>→<结构体声明 >|< 结构体声明结构体声明列表>
<结构体声明>→<说明符限定符列表结构说明符';'说明符→类型说明符说明符限定符列表> |< 类型说明符 >| <类型限定符说明符限定符列表> |< 类型限定符>
<结构说明符列表>→<结构体声明> | <结构说明符列表','结构体声明>
《结构体声明》→《声明》 |< ':'常量表达式> | <声明':'常量表达式>
<枚举声明>→<枚举'{'枚举器列表'}'> | <枚举标识符'{'枚举器列表'}'> | <枚举标识符>
<枚举器列表>→<枚举器> | <枚举器列表','枚举器>
<枚举器>→<标识符> | <标识符'='常量表达式>
<类型限定符>→<常量> | <易失的>
<类型限定符列表>→<类型限定符> | <类型限定符列表 类型限定符>
<参数类型列表>→<参数列表> | <参数列表','省略符号>
<参数列表>→<声明参数> | <参数列表','声明参数>
type_name →类型名称
specifier_qualifier_list限定说明符列表
| specifier_qualifier_list abstract_declarator限定符抽象说明符列表
abstract_declarator →抽象说明符→指针
pointer
| direct_abstract_declarator直接抽象说明符
| pointer direct_abstract_declarator指针直接抽象说明符
direct_abstract_declarator →直接抽象说明符
'(' abstract_declarator ')''(' 抽象说明符 ')'
| '[' ']'
| '[' constant_expression ']' '[' 常量表达式']'
| direct_abstract_declarator '[' ']'直接抽象说明符'[' ']'
| direct_abstract_declarator '[' constant_expression ']'直接抽象说明符'[' 常量表达式 ']'
| '(' ')'
| '(' parameter_type_list ')''('参数类型列表')'
| direct_abstract_declarator '(' ')' 直接抽象说明符'(' ')'
| direct_abstract_declarator '(' parameter_type_list ')'直接抽象说明符'('参数类型列表')'
labeled_statement →有标号语句
IDENTIFIER ':' statement标识符':'语句
| CASE constant_expression ':' statement 常量表达式':'语句
| DEFAULT ':' statement 语句
1012 C语言文法的更多相关文章
- C语言文法
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语言文法
程序 → 外部声明|程序 外部声明 外部声明 → 定义函数|定义 函数定义 → 类型标识符 声明部分语句 类型标识符 → 空类型|字符型|整型|浮点型 声明部分语句 → 指针 直接声明|直接声明 指针 ...
随机推荐
- Maven入门系列(二)--设置中央仓库的方法
原文地址:http://www.codeweblog.com/maven入门系列-二-设置中央仓库的方法/ Maven仓库放在我的文档里好吗?当然不好,重装一次电脑,意味着一切jar都要重新下载和发布 ...
- SpringMvc输入地址报错
出现上面的错误如果不是路径的问题,就应该找环境的问题,我这里的问题是tomcat7+jdk6,应该是jdk7或以后的版本(因为是web socket) 对应的版本http://tomcat.apach ...
- 2145334赵文豪《Java程序设计》第2周学习总结
2145334赵文豪<Java程序设计>第2周学习总结 教材学习内容总结 第二周的学习结束了,又是充实的一周,在这周的java学习过程中,我们主要学习了java的基础语法.其中包括类型变量 ...
- 20145337《Java程序设计》第三周学习总结
20145337 <Java程序设计>第三周学习总结 教材学习内容总结 类与对象 类与对象的关系:要产生对象必须先定义类,类是对象的设计图,对象是类的实例.我觉得在视频中对类与对象关系的描 ...
- BizTalk动手实验(十三)EDI解决方案开发配置
1 课程简介 通过本课程熟悉EDI解决文案的开发与配置,本动手实验步骤及内容采用微软官方SDK完成,学员在实验过程中结合官方教程来完成本实验 2 准备工作 从BizTalk安装目录的SDK中将EDI ...
- Java之方法重载(笔记)
Java是根据参数类型和个数的不同实现重载. 1.当参数类型是基本类型,但不完全匹配. void test(int i) { } void test(float f) { } public stati ...
- HDFS的概念
1.数据块 每个磁盘都有默认的数据块大小,这是磁盘进行数据读/写的最小单位.构建于单个磁盘之上的文件系统通过磁盘块来管理该文件系统中的块,该文件系统块的大小可以是磁盘块的整数倍.文件系统快一半为几千字 ...
- 关于iOS去除数组中重复数据的几种方法
关于iOS去除数组中重复数据的几种方法 在工作工程中我们不必要会遇到,在数组中有重复数据的时候,如何去除重复的数据呢? 第一种:利用NSDictionary的AllKeys(AllValues)方 ...
- form submit时将__VIEWSTATE和__VIEWSTATEGENERATOR一起post到另外的页面,出现验证视图状态 MAC 失败。
错误信息: 验证视图状态 MAC 失败.如果此应用程序由网络场或群集承载,请确保 配置指定了相同的 validationKey 和验证算法.不能在群集中使用 AutoGenerate. 原因分析: F ...
- NSArray倒序
NSArray倒序 NSArray *tmparr = [[upLoadImageArr reverseObjectEnumerator] allObjects]; ios 正则表达式替换 . 不可变 ...