1014_C语言的文法
程序-> <外部声明><程序><外部声明>
外部声明-> <函数定义>|<声明>
函数定义-> <函数类型><说明符><复合语句>
函数类型-> void|char|int|float
说明符-> <指针 ><直接说明符>|<直接说明符>
指针-> <*>|<*><指针>
直接说明符-> <标识符>|<直接说明符[]>|<直接说明符[常量表达式]>|<标识符(参数序列)>|<标识符()>|<直接说明符,标识符序列>
标识符序列-> <标识符>|<标识符序列><,><标识符>
常量表达式-> <条件表达式>
参数序列-> <参数声明>|<参数声明><,><参数声明>
参数声明-> <声明说明符><声明符>
复合语句-> <{}>|<{<陈述序列>}>|<{<声明序列><陈述序列>}>
声明序列-> <声明符>|<声明序列><声明符>
声明符-> <初始化说明符>|<初始化说明符><,><初始化说明符>
初始化说明符-> <说明符>|<说明符><=><初始化程序>
初始化程序-> <赋值表达式>|<{<初始化序列>}>|<{<初始化序列><,>}>
初始化序列-> <初始化程序>|<初始化序列><,><初始化>
陈述序列-> <陈述语句>|<陈述序列><陈述语句>
陈述语句-> <复合语句>|<表达式语句>|<选择语句>|<循环语句>|<转移语句>
表达式语句-> <;>|<表达式><;>
选择语句-> IF(<表达式>)<陈述语句>|IF(<表达式>)<陈述语句>ELSE<陈述语句>
循环语句->WHILE(<表达式>)<陈述语句>|FOR(<表达式语句><表达式语句>)<陈述语句>|FOR(<表达式语句><表达式语句><陈述语句>)<陈述语句>
转移语句->CONTINUE;| BREAK; | RETURN; | RETURN <表达式>;
表达式-><任务表达式>|<表达式>;<任务表达式>
任务表达式-><条件表达式>|<一元运算符><赋值运算符><任务表达式>
条件表达式-><OR表达式>|<OR表达式>?<表达式>:<条件表达式>
OR表达式-><AND表达式>|<OR表达式>OR_OP<AND表达式>
AND表达式-><包含OR表达式>|<AND表达式>AND_OP<包含OR表达式>
包含OR表达式-><单独OR表达式>|<包含OR表达式>'|'<单独OR表达式>
单独OR表达式-><AND表达式>|<单独OR表达式>'^'<AND 表达式>
AND 表达式-><赋值表达式>|<AND表达式>'&'<赋值表达式>
赋值表达式-><关系式>|<赋值表达式>EQ_OP<关系式>|<赋值表达式>NE_OP<关系式>
关系式-><位移表达式>|<关系式>'<'<位移表达式>|<关系式>'>'<位移表达式>|
<关系式>LE_OP<位移表达式>|<关系式>GE_OP<位移表达式>
位移表达式-><相加表达式>|<位移表达式>LEFT_OP<相加表达式>|
<位移表达式>RIGHT_OP<相加表达式>
相加表达式-><乘法表达式>|<相加表达式>'+'<乘法表达式>|<相加表达式>'-'<乘法表达式>
乘法表达式-><计算表达式>|<乘法表达式>'*'<计算表达式>|
<乘法表达式>'/'<计算表达式>|<乘法表达式>'%'<计算表达式>
计算表达式-><一元表达式>|(<类型名>)<计算表达式>
一元表达式-><后缀表达式>
1014_C语言的文法的更多相关文章
- C语言简单文法
<源程序>→<外部声明>|<外部声明><函数体> <外部申明>→<头文件><函数声明>|其他声明 <函数体&g ...
- c语言简易文法
<程序>→<外部声明>|<程序><外部声明> <外部声明>→<函数定义>|<声明> <函数定义>→< ...
- C语言简易文法(无左递归)
<程序> -〉 <外部声明> | <函数定义><外部声明> -〉<头文件> | <变量> | <结构体> <头 ...
- C语言新文法
程序->外部声明 | 程序 外部声明 程序->外部声明A' A'->外部声明A'|ε 外部声明->修饰符 变量名 形参 修饰符->void | int | char | ...
- C语言的文法分析
<程序> -> <声明> | <程序> <函数> <声明> -> #include<stdio.h>|# ...
- 关于c语言的文法分析问题
<程序> -> <声明> | <程序> <函数> <声明> -> #include<stdio.h>|# ...
- 北航 编译实践 PL/0文法
编译实践-PL\0编译系统实现 姓名: 专业: 计算机科学与技术 学院: 软件学院 提交时间: 2013年12月25日 北京航空航天大学·软件学院 编译实践-PL\0编译系统实现 实验要求 以个人 ...
- C++写一个简单的解析器(分析C语言)
该方案实现了一个分析C语言的词法分析+解析. 注意: 1.简单语法,部分秕.它可以在本文法的基础上进行扩展,此过程使用自上而下LL(1)语法. 2.自己主动能达到求First 集和 Follow 集. ...
- Kotlin 语言下设计模式的不同实现
偶然在 Github 上看到 dbacinski 写的 Kotlin 语言下设计模式的不同实现(这里的不同是相对于 Java 语言的),有些实现非常好,但是有些实现的例子不是很赞同.所以自己写了 Ko ...
随机推荐
- Linux 定制X86平台操作系统
/********************************************************************************* * Linux 定制X86平台操作 ...
- I.MX6 Manufacturing Tool V2 (MFGTool2) Emmc mksdcard-android.sh hacking
#!/bin/bash # 参考文章: # . Shell特殊变量:Shell $, $#, $*, $@, $?, $$和命令行参数 # http://c.biancheng.net/cpp/vie ...
- BZOJ1095: [ZJOI2007]Hide 捉迷藏【动态点分治】
Description 捉迷藏 Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子.某天,Jiajia.Wind和孩子们决定在家里玩 捉迷藏游戏.他们的家很大且构造很奇特,由N个屋子和N-1条 ...
- mac终端下修改MySQL的编码格式--找不到my-default.cnf及my.cnf
首先请确认正确安装好MySQL. 1- 先配置环境变量path 1.1 打开终端,输入: cd ~ 会进入~文件夹, 1.2 然后输入:touch .bash_profile 回车执行后, 1.3 再 ...
- test20181019 B君的第二题
题意 分析 快速子集和变换以及快速超集和变换的裸题. 用\(f(s)\)表示集合s的方案数,初始化为输入中s出现的次数. 做一遍快速子集和变换,此时f(s)表示s及其子集在输入中出现的次数. 对所有f ...
- (经典)直接插入排序based on 二分查找
#include<stdio.h> // 查找第一个大于key的元素,成功则返回该元素的下标,否则返回数组末元素的下一位 int findFirstLarger(int A[],int n ...
- VC++常规错误之17:1>nafxcwd.lib(afxmem.obj) : error LNK2005
VC++常规错误之17:1>nafxcwd.lib(afxmem.obj) : error LNK2005 (1)错误案例:在写日志程序中出现,工程是MFC程序(注:win32控制台应用程序,不 ...
- 32位汇编基础_内存_每个应用进程都会有自己独立的4GB内存空间
1.每个应用进程都会有自己独立的4GB内存空间 这句话很多人听起来可能会很矛盾很不解. 例如,我的电脑只有2GB的内存,打开个软件机会占用4GB内存,而我的电脑内存只有2GB,显然不够用,但是为什么程 ...
- 自己写了一个图片的马赛克消失效果(jQuery)
其中的一个效果: html代码: <h1>单击图片,产生效果</h1> <div class="box"></div> 插件代码: ...
- [Windows报错]要求的函数不受支持、这可能是由于 CredSSP 加密 Oracle 修正
版本说明: 服务器版本:Windows Server 2008 R2 SP1(虚机) 客户端版本:Windows 10 家庭版 问题描述: 使用Windows远程桌面连接时弹出如下描述的错误,如图 ...