程序→<外部声明>|<程序>

外部声明→<功能定义>|<声明>

功能定义→<声明复合语句的类型>

类型→<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文法的更多相关文章

  1. C语言文法

    C语言文法 源程序 → 外部声明 | 子程序(外部声明) 外部声明   → 函数定义| 函数声明 函数定义 → 类型标识符(复合句) 标识符类型 → 无类型 | 字符型 | 整型 | 浮点型 整型→ ...

  2. QParserGenerator的文法文件介绍

    在沉默了数月之后,博主心血来潮想继续介绍QParserGenerator,在这里我们将不再继续介绍任何有关于LALR(1)的算法(那东西只会把你的脑子变成一团浆糊),让我们来看一下QParserGen ...

  3. 文法分类的python实现

    #-*-coding:utf-8-*- G = raw_input("提示输入文法:"); #G为文法 S = G[2] #识别符号S Vn = raw_input("提 ...

  4. c语言简易版文法

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

  5. 北航 编译实践 PL/0文法

    编译实践-PL\0编译系统实现 姓名:   专业: 计算机科学与技术 学院: 软件学院 提交时间: 2013年12月25日 北京航空航天大学·软件学院 编译实践-PL\0编译系统实现 实验要求 以个人 ...

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

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

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

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

  8. Neo4查询语言Cypher3.0.7在antlr4下的文法(原创分享)

    本人网上找了很久都没有一个比较好的cypher文法,于是花了一段时间研究cypher和编写基于antlr4下的cypher文法. 希望对想用做cypher相关工具的朋友有一点用,欢迎交流. 珍重声明: ...

  9. 表达式计算器(LL1文法)

    LL(1)文法求算数表达式的值递归子程序法 分析过程: 表达式文法G[E]:E->E+T|E-T|TT->T*F|T/F|T%F|FF->N^F|NN->(E)|NUM|+NU ...

  10. 求LR(0)文法的规范族集和ACTION表、GOTO表的构造算法

    原理 数据结构 // GO private static Map<Map<Integer,String>,Integer> GO = new HashMap<Map< ...

随机推荐

  1. FLINK流计算拓扑任务代码分析<二>

    首先 是 StreamExecutionEnvironment see = StreamExecutionEnvironment.getExecutionEnvironment(); 我们在编写 fl ...

  2. SparkR链接mysql数据库(踩坑)

    本文主要讲述sparkR链接Mysql的过程和坑. SparkR的开发可以用RStudio工具进行开发,连接spark可以通过RStudio界面中的Connections进行配置连接;具体方法这里不做 ...

  3. nRF52832 BLE_DFU空中升级OTA(二)编译下载(SDK14.2.0)

    上一篇配置好了开发环境,现在就可以试着跑一下例程了,这里需要两个例程,一个是bootloader的,一个是应用程序的,其路径分别为: bootloader:SDK_14.2.0工程\examples\ ...

  4. Node.js 引用 gm 包错误 Error: Could not execute GraphicsMagick/ImageMagick

    今天在学习前后台图像剪切时,下载了有图片剪切瑞士军刀之称的 GraphicsMagick. 给 gm.exe 配置了环境变量,在 npm 下好了 gm 的模块,但是运行却出现了错误. 错误如图: [E ...

  5. 用gogs搭建git服务器

    Gogs 是一款极易搭建的自助 Git 服务. Gogs 的目标是打造一个最简单.最快速和最轻松的方式搭建自助 Git 服务.使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 G ...

  6. Git 命令及使用经验

    手册中的基本命令: CONFIGURE TOOLING Configure user information for all local repositories $ git config --glo ...

  7. vim 查找

    一.用/和?的区别:/后跟查找的字符串.vim会显示文本中第一个出现的字符串.?后跟查找的字符串.vim会显示文本中最后一个出现的字符串.二.注意事项:不管用/还是?查找到第一个字符串后,按回车,vi ...

  8. combotree -下拉框树异步加载

    问题: 下拉树数据比较多时,全加载会产生页面延迟,需要实现异步加载 方案: 点击事件加载:先加载部分,点击节点时再展开并追加子节点 onBeforeExpand事件:在展开树前加载,感觉这种方式比较优 ...

  9. iOS 的音频播放

    一.Audio Toolbox 1.使用代码 #import <AudioToolbox/AudioToolbox.h> AudioServicesPlaySystemSound(1106 ...

  10. Qt 利用XML文档,写一个程序集合 三

    接上一篇https://www.cnblogs.com/DreamDog/p/9214052.html 滚动区域实现, 滚动区域可以三成分层 第一层,显示内容 中间层,滚动层 第三层,爸爸层 把我们要 ...