1029C语言文法的理解
<程序>→<外部声明>|<程序><外部声明>
<外部声明>→<函数定义>|<声明>
<函数定义>→<类型说明><声明><复合语句>
<类型说明>→void|char|int |float
<声明>→<指针直接说明符>|<直接说明符>
<指针>→’*‘|'*'指针
<直接说明符>→<标识符>|<直接说明符‘[’‘]’>|<直接说明符‘[’常数表达式‘]’> |<标识符‘(’参数列表‘)’>|<标识符><‘(’‘)’>>|<直接说明符><','><标识符列表>
<标识符列表>→<:标识符>|<标识符列表><','><标识符>
<常数表达式>→<条件表达式>
<参数列表>→<参数声明>|<参数列表><','><参数声明>
<参数声明>→<声明说明符><标识符>
<复合语句>→<‘{’><‘}’>|<'{'><语句列表><'}'>|<'{'><声明列表><语句列表><'}'>
<声明列表>→<声明>|<声明列表><声明>
<声明>→<初始化声明>|<初始化声明列表><‘,’><初始化声明>
<初始化声明>→<声明>|<声明><‘=’><初始化程序>
<初始化程序>→<赋值表达式>|<‘{’><初始化程序列表><‘}’>|<'{'><初始化程序列表><','><'}'>
<初始化程序列表>→<初始化程序>|<初始化程序列表><‘,’><初始化程序>
<语句列表>→<语句>|<语句列表><语句>
<语句>→<复合语句>|<表达式语句>|<选择语句>|<循环语句>|<跳跃语句>
<表达式语句>→<';'>|<表达式><';'>
<选择语句>→<:><if><'('><表达式><')'><语句>|<if><'('><表达式><')'><语句><else><语句>
<循环语句>→<while><'('><表达式><')'><语句>|<for><'('><表达式语句><表达式语句><')'><语句>|<for><'('><表达式语句><表达式语句><表达式><')'><语句>
<跳跃语句>→ CONTINUE< ';'>| BREAK <';'>| RETURN <';'>| RETURN <表达式> <';'>
<表达式>→<:><赋值表达式>|<表达式><','><赋值表达式>
<赋值表达式>→<条件表达式>|<一元表达式><赋值操作符><赋值表达式>
<条件表达式>→<逻辑或表达> | <逻辑或表达><‘?‘> <表达式>< ‘:‘><条件表达式>
<逻辑或表达>→<逻辑与表达> |< 逻辑或表达 或运算><逻辑表达式>
< 逻辑与表达>:<或表达式> |< 逻辑表达式 >和<运算或表达式>
< 或运算表达式>→<异或表达式> |< 或运算表达式 ><‘>|<‘>< 异或表达式>
< 异或表达式>:<与表达式> | < 异或表达式><‘^‘><与表达式>
< 与表达式>:<相等表达式> |< 与表达式><‘&‘><相等表达式>
< 相等表达式>:<关系表达式> |< 相等表达式等于运算关系表达式> | <相等表达式不等于运算关系表达式>
< 关系表达式>:<移位表达式> | <关系表达式><‘<‘><移位表达式 >|< 关系表达式><‘>‘><移位表达式> |< 关系表达式小于等于运算移位表达式> |< 关系表达式大于等于运算移位表达式>
< 移位表达式>:<加法表达式> | <移位表达式左运算加法表达式> |< 移位表达式右运算加法表达式>
< 加法表达式:<乘法表达式> |< 加法表达式><‘+‘><乘法表达式> |< 加法表达式><‘-‘><乘法表达式>
< 乘法表达式>:<强制转换表达式> | <乘法表达式><‘*‘><强制转换表达式> | <乘法表达式><‘/‘><强制转换表达式 >| <乘法表达式><‘%‘><强制转换表达式>
< 强制转换表达式>:<一元表达式> |< ‘(‘>< 类型名称 ><‘)‘><强制转换表达式>
<一元表达式>:<后缀表达式> | <INC运算一元表达式> |< DEC运算一元表达式> |< 一元运算符将表达式> | < 结构体变量的一元表达式 >| < 结构体变量的><‘(‘>< 类型名称>< ‘)‘>
<后缀表达式>:<基本表达式> | <后缀表达式><‘[‘><表达式><‘]‘> |< 后缀表达式><‘(‘ ><‘)'> | <后缀表达式>< ‘(‘><参数表达式列表><‘)‘ > | <后缀表达式><‘.‘>< 标识符 >| <后缀表达式指针运算标识符> |< 后缀表达式INC运算> |< 后缀表达式DEC运算>
<基本表达式>→<标识符> |<常量 >| <字符串常量> | < ‘(‘><表达式><‘)‘>
<参数表达式列表>:< 赋值表达式 >| <参数表达式列表><‘,‘><赋值表达式>
<一元运算符>:< ‘&‘> | < ‘*‘> | < ‘+‘> | < ‘-‘> | < ‘~‘> |< ‘!‘>
<赋值运算符>→<‘=‘> |< 乘法分配> | <DIV分配> |< MOD分配> | <加法分配> | < SUB分配> |< 左分配 >| <右分配与分配>|< 异或分配 >|<或分配>
<存储类说明符>→<定义类型> |< 外部变量> |< 静态 >|< 自动> | <寄存器>
<结构或联合说明符>:<结构或联合标识符><‘{‘><结构体声明列表><‘}‘> |< 结构或联合><‘{'><结构体声明列表><‘}‘ > |< 结构或联合标识符>
<结构或联合>:<结构体> |< 联合>
<结构体声明列表>:<结构体声明> |< 结构体列表声明结构体声明>
<结构体声明>:<说明符限定符列表结构说明符><‘;‘>
<说明符说明符限定符列表> →<类型说明符说明符限定符列表> |< 类型说明符> |< 类型限定符说明符限定符列表 >| <类型限定符>
<结构说明符列表>→<结构体声明> |< 结构说明符列表><‘,‘><结构体声明>
<结构体声明>→<:><声明 >| < ‘:‘><常量表达式> |< 声明><‘:‘><常量表达式>
<枚举声明>→<枚举><‘{‘><枚举器列表><‘}‘> | <枚举标识符><‘{‘><枚举器列表><‘}‘> | <枚举标识符>
<枚举器列表>→<枚举器> | <枚举器列表><‘,‘>
<枚举器枚举器>→<标识符 >|< 标识符><‘=‘><常量表达式>
<类型限定符>→<常量 >|< 易失的>
<类型限定符列表>→<类型限定符> | <类型限定符列表>< 类型限定符>
<参数类型列表>→<参数列表> | <参数列表><‘,‘><省略符号>
<参数列表>→<:><声明参数> |< 参数列表><‘,‘><声明参数>
<抽象说明符>→<指针> | <直接抽象说明符> | <指针直接抽象说明符>
<直接抽象说明符>→ <‘(‘> <抽象说明符 ><‘)‘ > |< ‘[‘ ><‘]‘ >| < ‘[‘>< 常量表达式><‘]‘>| <直接抽象说明符><‘[‘>< ‘]‘> | <直接抽象说明符><‘[‘>< 常量表达式>< ‘]‘> | < ‘(‘>< ‘)‘> | < ‘(‘><参数类型列表><‘)‘> |< 直接抽象说明符><‘(‘>< ‘)‘> | <直接抽象说明符><‘(‘><参数类型列表><‘)‘>
<有标号语句>→<标识符><‘:><‘语句> | <CASE常量表达式><‘:‘><语句 > | < DEFAULT><‘:‘><语句>
1029C语言文法的理解的更多相关文章
- 1029-c语言文法的理解
<程序>→<外部声明>|<程序><外部声明> <外部声明>→<函数定义>|<声明> <函数定义>→< ...
- 1029c语言文法2理解
program → external_declaration | program external_declaration <程序>→ <外部声明>|<程序>< ...
- C语言文法的理解
<程序> -> <外部声明> | <程序> <外部声明> <外部声明> -> <函数定义> | &l ...
- 1029-对c语言文法的理解
<程序>→<外部声明>|<程序><外部声明> <外部声明>→<函数定义>|<声明> <函数定义>→< ...
- 1029c语言文法
<程序>→<外部声明>|<程序><外部声明> <外部声明>→<函数定义>|<声明> <函数定义>→< ...
- 1029c语言文法定义与c程序的推导过程
program → external_declaration | program external_declaration <源程序>→ <外部声明> | <源程序> ...
- 1029对c语言文法的理解
<程序>→<外部声明>|<程序><外部声明> <外部声明>→<函数定义>|<声明> <函数定义>→< ...
- 1014 C语言文法定义与C程序的推导过程 程序:冒泡算法C程序(语法树)
阅读并理解提供给大家的C语言文法文件. 参考该文件写出一个自己好理解版的现实版的完整版的C语言文法. 给出一段C程序,画出用上述文法产生这段C程序的完整语法树. 程序:冒泡算法C程序 点此文字查看原图 ...
- 1029 C语言文法定义与C程序的推导过程
1 阅读并理解提供给大家的C语言文法文件. 2 参考该文件写出一个自己好理解版的现实版的完整版的C语言文法. 3 给出一段C程序,写出用上述文法产生这段C程序的推导过程. program → exte ...
随机推荐
- centos6.9下安装python3.7
说明 以下所有操作都基于centos6.9 python3.7依赖openssl1.0.2,首先更新系统自带的openssl 建议 升级系统到centos7(系统openssl已升级到1.0.2) 升 ...
- vue相关理论知识
es6常用语法简介 es是js的规范标准 let 特点: 1.有全局和函数作用域,以及块级作用域(用{}表示块级作用域范围) 2.不会存在变量提升 3.变量不能重复声明 const 特点: 1.有块级 ...
- SQL学习笔记:分块提取查询结果
实践中,数据库中可能有数十亿条记录.查询结果有可能达到千万条.如果用dbGetQuery( ) 一次性取出所有查询结果,内存可能吃不消.但是,如果容许分块处理数据来完成任务,那么下述方法不失为一个好的 ...
- C#——数据库取数据,DataGridView显示数据
使用未封装的方法连接数据库 步骤: 一.确定连接方式(以SqlServer为例): ①Windows身份验证. string ConnectionType = "server=.;datab ...
- 20155317王新玮 2016-2017-2《Java程序设计》第2周学习总结
20155317 2016-2017-2<Java程序设计>第2周学习总结 课本知识: 认识类型与环境 整数:包括short,int,long .它们分别占用2个字节,4个字节和8个字节. ...
- QT-2D编程
QT-[转]2D编程 Qt中提供了强大的2D绘图系统,可以使用相同的API在屏幕上和绘图·设备上进行绘制,主要基于QPainter.QPainterDevice和QPainterEngine这3个类. ...
- 1、maven打包 install package deploy区别
maven package:打包到本项目,一般是在项目target目录下.如果a项目依赖于b项目,打包b项目时,只会打包到b项目下target下,编译a项目时就会报错. maven install:打 ...
- php S3调用SDK示例 AmazonS3
demo.php <?php /* * To change this license header, choose License Headers in Project Properties. ...
- R的数据库访问-MySQL
目录 1 RMySQL 2 环境与安装 3 建立通信 1 RMySQL R作为一款数据分析的工具,,而MySQL是一款常用的开源关系型数据库软件,非常适用于中小型的数据存储,当二者相互结合时才能爆发出 ...
- linux菜鸟笔记
linux目录的子目录复制 cp -r 要复制的目录+新的目录 cp -r a test 意思就是将a的子目录及文件复制到新的目录test下面 zt@ubuntu:~/Desktop$ mkdir - ...