RecursiveSubroutine

介绍

编译原理语法分析——递归下降子程序类,C++实现。

实验说明

一、实验目标

分别采用自顶向下和自底向上两种语法分析方法,编制一个语法分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析实验内容。

二、实验内容

选取一种自顶向下语法分析方法(递归子程序、LL分析法)和一种自底向上语法分析法(算符优先分析、LR分析方法)设计语法分析器,并对简单语言进行语法分析。

2.1 待分析的简单语言的语法

用扩充的BNF表示如下:

⑴::=beginend

⑵::={;}

⑶::=

⑷::=ID:=

⑸::={+ | -}

⑹::={* | /

⑺::=ID | NUM | ()

用上下文无关文法表示如下:

P→begin SList end

SList→S{;S}

S→A

A→ID:=E

E→E+T|E-T|T

T→T*F|T/F|F

F→(E)|ID|NUM

2.2 实验要求说明

输入单词串,以“#”结束,如果是文法正确的句子,则输出成功信息,打印“success”,否则输出“error”。

例如:

输入 begin a:=9; x:=23; b:=a+x end #

输出 success!

输入 x:=a+bc end #

输出 error

三、实验报告

实验结束需要提交实验报告,实验报告需要包含自顶向下和自底向上两种分析程序算法(可以用流程图表示)和源代码,以及测试结果截图以及相关分析(需要设计至少10个不同的测试用例)。两种不同算法用两个文档分别保存。

实验过程

改为LL(1)文法

P→begin SList end

SList→S{;S}

S→A

A→ID:=E

E→TE’

E’→BTE’|

B→+|-

T→FT’

T’→CFT’|

C→*|/

F→(E)|ID|NUM

递归子程序

参看项目代码

开发工具

VS2015

依赖

参与贡献

Fork 本仓库

新建 Feat_xxx 分支

提交代码

新建 Pull Request

码云特技

使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md

GVP 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目

语法分析器c语言 递归子程序,RecursiveSubroutine相关推荐

  1. QQ浏览器HD iOS 动态化/热修复方案QBDF解释器-语法制导翻译与递归子程序设计(编译原理)(5)简书被冻结-搬运】

    原作时间:2019-2021年 此次共享,腾讯内网 / 外网同步发布. 内部代码地址:https://git.code.oa.com/fatboyli/QBDF 外部代码地址:GitHub - ven ...

  2. ll1语法分析器c语言E-E T,算术表达式的 LL(1)语法分析器

    算术表达式的 LL(1)语法分析器 张会霞 (辽宁师范大学 计算机与信息技术学院,辽宁 大连 116000) 摘要:语法分析是编译程序的核心部分,对其进行研究有着重要意义.本文介绍了编译过程语法分析阶 ...

  3. lr 1 语法分析器c语言,LR语法分析器

    1 LR语法分析器 本节介绍一个有效的自底向上的分析技术,可以用于一大类上下文无关文法的语法分析.这种技术叫做LR(k)分析法,其中L表示从左到右扫描输入串,R表示构造一个最右推导的逆过程,k指的是在 ...

  4. 语法分析器c语言实验报告,词法分析实验报告(C++)..doc

    词法分析实验报告(C). 词法分析实验报告 一.实验目的 1. 掌握词法分析的原理. 2. 熟悉保留字表等相关的数据结构与单词的分类方法. 3. 掌握词法分析器的设计与调试. 二.实验内容 根据编译中 ...

  5. ll1语法分析器c语言E-E T,一个c++编写的语法分析器(编译愿意LL(1)文法)

    1 输入任意文法,改写文法使其成为LL(1)文法. 1.1 由于老师给的应该是最适合我们联系的LL(1)文法,所以说我也是用以下文法进行分析. E→E+T | T T→T*F | F F→( E ) ...

  6. 编译原理LR(1)语法分析器 C++实现

    LR(1)语法分析器 C++语言编写,已通过VS2019调试 文章目录 LR(1)语法分析器 一.测试结果 二.测试文件 三.核心代码 四.完整代码 感谢阅读! 如有错误,恳请指正! 一.测试结果 二 ...

  7. java语言生成语法分析_语法分析器自动生成工具一览

    最近打算重做以前的一个留下遗憾的工作,当中的一项小任务就是要求编写一个简易SQL语言的语法分析器. 本科的<编译原理>课程依稀在我脑中留下些许映象.当初的课程大作业是写一个叫Dicuf(貌 ...

  8. 递归下降文法C语言实验报告,递归下降语法分析器实验报告.doc

    递归下降语法分析器实验报告 编译原理实验报告 题目: 递归下降语法分析器 学 院 计算机科学与技术 专 业 xxxxxxxxxxxxxxxx 学 号 xxxxxxxxxxxx 姓 名 宁剑 指导教师 ...

  9. 《编译原理》实验报告——递归下降语法分析器的构建

    一.实验要求 运用递归下降法,针对给定的上下文无关文法,给出实验方案.预估实验中可能出现的问题. 二.实验方案 1.构造LL(1),通过设计.编制.调试递归下降语法分析程序,对输入的符号串进行分析匹配 ...

最新文章

  1. 百度携手同济大学,瞄准AI、智慧交通等核心科技领域攻关
  2. Codeforces Round #528 (Div. 2, based on Technocup 2019 Elimination Round 4) C. Connect Three 【模拟】...
  3. 树莓派无法安装mariadb_RaspberryPi(树莓派)如何安装 MariaDB / MySQL 数据库
  4. linux撤销编辑内容,linux编辑利器vim常用操作
  5. mysql的数据类型可分为哪两种_mysql数据类型分为哪几种
  6. python爬虫源码_Python—爬虫:王者荣耀全套皮肤【附源码】
  7. python程序设计sgnx_Python中符号函数的数值积分
  8. 光盘版linux6,光盘上的系统 Slax Linux 6.0.6新版
  9. (转)Spring+JDBC组合开发
  10. Zookeeper 在Linux系统的安装
  11. 在VS2019 C++ 中实现Socket通信,添加ws2_32.lib静态库
  12. 微信小程序文本输入<input/> 详解
  13. 心理测试单机小软件,十个有趣的心理小测试 好玩的心理测试题
  14. 虚幻引擎UE4背包系统(如何制作可拖动(Drag and Drop)的背包(Scrollbox))
  15. photoshop基本的操作
  16. PyTorch 入门与实践(七)循环神经网络(RNN)
  17. 复旦计算机和中科大计算机,复旦大学和中国科学技术大学哪个实力更强?
  18. python体验课是上纯代码_大陈教初中生学Python,入门体验第二课教学设计,溯本追源...
  19. 【HCIA-cloud】【4】服务器虚拟化之存储资源管理:存储资源类型说明、存储配置模式说明【普通、精简、延迟置零】、虚拟机磁盘类型说明、FusionCompute中操作添加存储
  20. html鼠标划到背景图显示文字,用css3实现鼠标移入图片后显示其他文字/图片的效果...

热门文章

  1. OPENCV-1 学习笔记
  2. 刚刚,OpenStack 第 19 个版本来了,附28项特性详细解读!
  3. HTG Explains: Why Linux Doesn’t Need Defragmenting
  4. linux系统基础优化小结
  5. C# 多线程 Parallel.For 和 For 谁的效率高?那么 Parallel.ForEach 和 ForEach 呢?
  6. SVN学习(二)——SVN 提交、更新、解决冲突等操作步骤
  7. JavaScriptWindow使用对象
  8. malloc/free与new/delete的区别
  9. NOD32最新升级ID
  10. HDR 成像技术学习(一)