c文法
程序→<外部声明>|<程序>
外部声明→<功能定义>|<声明>
功能定义→<声明复合语句的类型>
类型→<VOID| CHAR| INT| FLOAT>
说明符→<指针直接说明符>|<直接说明符>
指针→<*>|<*指针>
直接说明符→<标识符>|<直接说明符’[‘ ‘]’ >|<直接说明符’[’ 常数表达式 ’]’>|<标识符'(' 参数列表 ')'
>|<标识符'(' ')'|直接说明‘,’标识符表
标识符表→标识符 |标识符列表
常数表
程序→<外部声明>|<程序>
外部声明→<功能定义>|<声明>
功能定义→<声明复合语句的类型>
类型→<VOID| CHAR| INT| FLOAT>
说明符→<指针直接说明符>|<直接说明符>
指针→<*>|<*指针>
直接说明符→<标识符>|<直接说明符’[‘ ‘]’ >|<直接说明符’[’ 常数表达式 ’]’>|<标识符'(' 参数列表 ')'
>|<标识符'(' ')'|直接说明‘,’标识符表
标识符表→标识符 |标识符列表
常数表达式→条件表达式
参数表→参数声明|参数表
参数声明→标识符的声明符说明
复合语句→ '{' '}'| '{' 声明列表'}'| '{' <声明列表><语句表> '}'
声明→声明符|初始化声明符
初始化声明符→声明符|声明符的初始设定式
初始设定式→赋值表达式| '{' 初始设定式列表 '}'
语句→选择语句|循环语句|跳转语句|表达语句|条件语句
表达语句→;|表达式;
选择语句→if(表达式)语句| if(表达式)语句else语句
循环语句→while(表达式)语句|for(表达式;表达式;表达式)语句|
跳转语句→| CONTINUE ';'| BREAK ';'| RETURN ';'| 返回表达式';'
达式→条件表达式
参数表→参数声明|参数表
参数声明→标识符的声明符说明
复合语句→ '{' '}'| '{' 声明列表'}'| '{' <声明列表><语句表> '}'
声明→声明符|初始化声明符
初始化声明符→声明符|声明符的初始设定式
初始设定式→赋值表达式| '{' 初始设定式列表 '}'
语句→选择语句|循环语句|跳转语句|表达语句|条件语句
表达语句→;|表达式;
选择语句→if(表达式)语句| if(表达式)语句else语句
循环语句→while(表达式)语句|for(表达式;表达式;表达式)语句|
跳转语句→| CONTINUE ';'| BREAK ';'| RETURN ';'| 返回表达式';'
c文法的更多相关文章
- C语言文法
C语言文法 源程序 → 外部声明 | 子程序(外部声明) 外部声明 → 函数定义| 函数声明 函数定义 → 类型标识符(复合句) 标识符类型 → 无类型 | 字符型 | 整型 | 浮点型 整型→ ...
- QParserGenerator的文法文件介绍
在沉默了数月之后,博主心血来潮想继续介绍QParserGenerator,在这里我们将不再继续介绍任何有关于LALR(1)的算法(那东西只会把你的脑子变成一团浆糊),让我们来看一下QParserGen ...
- 文法分类的python实现
#-*-coding:utf-8-*- G = raw_input("提示输入文法:"); #G为文法 S = G[2] #识别符号S Vn = raw_input("提 ...
- c语言简易版文法
文法 <程序>→<外部声明>|<程序><外部声明> <外部声明>→<函数定义>|<声明> <函数定义>→ ...
- 北航 编译实践 PL/0文法
编译实践-PL\0编译系统实现 姓名: 专业: 计算机科学与技术 学院: 软件学院 提交时间: 2013年12月25日 北京航空航天大学·软件学院 编译实践-PL\0编译系统实现 实验要求 以个人 ...
- 1014 C语言文法定义与C程序的推导过程 程序:冒泡算法C程序(语法树)
阅读并理解提供给大家的C语言文法文件. 参考该文件写出一个自己好理解版的现实版的完整版的C语言文法. 给出一段C程序,画出用上述文法产生这段C程序的完整语法树. 程序:冒泡算法C程序 点此文字查看原图 ...
- 1029 C语言文法定义与C程序的推导过程
1 阅读并理解提供给大家的C语言文法文件. 2 参考该文件写出一个自己好理解版的现实版的完整版的C语言文法. 3 给出一段C程序,写出用上述文法产生这段C程序的推导过程. program → exte ...
- Neo4查询语言Cypher3.0.7在antlr4下的文法(原创分享)
本人网上找了很久都没有一个比较好的cypher文法,于是花了一段时间研究cypher和编写基于antlr4下的cypher文法. 希望对想用做cypher相关工具的朋友有一点用,欢迎交流. 珍重声明: ...
- 表达式计算器(LL1文法)
LL(1)文法求算数表达式的值递归子程序法 分析过程: 表达式文法G[E]:E->E+T|E-T|TT->T*F|T/F|T%F|FF->N^F|NN->(E)|NUM|+NU ...
- 求LR(0)文法的规范族集和ACTION表、GOTO表的构造算法
原理 数据结构 // GO private static Map<Map<Integer,String>,Integer> GO = new HashMap<Map< ...
随机推荐
- 手动封装一个属于自己的AJAX类库
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 参考 https://raspberrypi.stackexchange.com/questions/3617/how-to-install-unrar-nonfree > 1.卸载unrar-free。 $ sudo apt-get remove unrar-free \ 2.通过编辑确保您拥有源存储库/etc/apt/sources.list。 $ cat /etc/apt/sources.
from my CSDN: https://blog.csdn.net/su_cicada/article/details/86939944 参考 https://raspberrypi.stacke ...
- Anaconda快速加载opencv
刚刚发现了两种Anaconda快速加载opencv的方法,亲测有效: 第一种: 直接在Navigator Environment 中搜opencv 如果搜不到,登陆Anaconda Cloud官网 h ...
- 线段树模板(施工ing)
声明 题目: 洛谷 P3372 优化之处:复杂度 O(n log n)级,可快速维护区间的各种操作(如:区间和.)
- nodejs实现文件上传
在使用ant-design的upload上传文件时,前端很好实现,那么我们如何实现node服务端呢? 服务端文件上传实现 var express = require('express'); var f ...
- Activemq首次运行报错 “找不到或无法加载主类”
首次运行Program Files\apache-activemq-5.10.0\bin目录下的activemq.bat文件,报错信息如下: 找不到或无法加载主类 Files\apache-activ ...
- 20155206 2016-2017-2 《Java程序设计》第1周学习总结
20155206 2016-2017-2 <Java程序设计>第1周学习总结 第一,二章学习内容总结 第一章 java基本知识 Java的三种技术架构: JAVAEE:Java Platf ...
- 20155210潘滢昊 Java第二次试验
20155210潘滢昊 Java第二次试验 实验内容 学会JunitTest的使用 实验代码 MyUtilTest代码: import org.junit.*; import junit.framew ...
- 20155232 2016-2017-3 《Java程序设计》第10周学习总结
20155232 2016-2017-3 <Java程序设计>第10周学习总结 教材学习内容总结 计算机网络 路由器和交换机组成了核心的计算机网络,计算机只是这个网络上的节点以及控制等,通 ...
- 20155328 《Java程序设计》实验一(Java开发环境的熟悉) 实验报告
20155328 <Java程序设计>实验一(Java开发环境的熟悉) 实验报告 一.实验内容及步骤 (一)使用JDK编译.运行简单的java程序 命令行下的程序开发: 打开windows ...