实验报告三:语法分析

一、实验目的

通过设计、开发一个S语言的语法分析程序,实现对源程序的语法检查和结构分析,加深对相关课堂教学内容的理解,提高语法分析方法的实践能力。

二、实验要求

       根据下列S语言的语法规则,进行语法分析

(1) <程序>→[<常量说明>][<变量说明>]<语句>

(2) <常量说明>→Const <常量定义>{,<常量定义>};

(3) <常量定义>→<标识符>=<无符号整数>

(4) <无符号整数>→<数字>{<数字>}

(5) <字母>→a|b|c| … |z

(6) <数字>→0|1|2| … |9

(7) <标识符>→<字母>{<字母>|<数字>}

(8) <变量说明>→Var <标识符>{,<标识符>};

(9) <语句>→<赋值语句>|<条件语句>|<当循环语句>|<复合语句>|ε

(10) <赋值语句>→<标识符>=<表达式>;

(11) <表达式>→[+|-]<项>{<加法运算符><项>}

(12) <项>→<因子>{<乘法运算符><因子>}

(13) <因子>→<标识符>|<无符号整数>|‘(’<表达式>‘)’

(14) <加法运算符>→+|-

(15) <乘法运算符>→* |/

(16) <条件语句>→if <条件> then <语句>| if <条件> then <语句> else

<语句>

(17) <条件>→<表达式><关系运算符><表达式>

(18) <关系运算符>→==|<=|<|>|>=|<>

(19) <当循环语句>→while <条件> do <语句>

(20) <复合语句>→begin <语句>{;<语句>} end

三、实验过程分析

    1. 采用多个bool类型函数:

a)  判断字符类型(大小写)

b)  判断数字

c) 判断标识符(Constant,Var等)、并更进一步,识别连续定义(形如 Constanta, b)

d)  判断表达式、赋值

e)  判断if、while循环

2. 输出语法分析结果

四、结果展示

       1、输入样本(词法分析输出的file_out.txt):

1 Const

1 x

1 =

1 8

1 ,

1 y

1 =

1 7

1 ;

2 Var

2 a

2 ,

2 b

2 ;

3 begin

4 a

4 =

4 x

4 +

4 y

4 ;

5 b

5 =

5 a

5 *

5 x

5 ;

6 end

 

2、输出结果:

…………


具体实验报告及代码见下载链接

其他实验报告(PL0,词法分析,语法分析,中间代码生成)请访问本人博客

编译原理实验报告三:语法分析(PL0,词法分析,语法分析,中间代码生成)相关推荐

  1. 编译原理实验报告一:PL0语言编译器分析(PL0,词法分析,语法分析,中间代码生成)

    实验报告一:PL0语言编译器分析 一.实验目的 通过阅读与解析一个实际编译器(PL/0语言编译器)的源代码, 加深对编译阶段(包括词法分析.语法分析.语义分析.中间代码生成等)和编译系统软件结构的理解 ...

  2. 编译原理实验(三)——LR(0)语法分析

    编译原理实验(三)--LR(0)语法分析 实验要求 参考程序 实验结果 程序输入说明 截图 实验要求 根据LR(0)分析法编写一个语法分析程序 直接输入根据已知文法构造的分析表M;对于输入的文法和符号 ...

  3. 编译原理上机实习c语言小子集编译程序的实现报告,合肥工业大学编译原理实验报告(完整代码版)...

    <合肥工业大学编译原理实验报告(完整代码版)>由会员分享,可在线阅读,更多相关<合肥工业大学编译原理实验报告(完整代码版)(58页珍藏版)>请在人人文库网上搜索. 1.计算机与 ...

  4. html解析器编译原理,编译原理实验报告词法分析器(内含源代码).docx

    编译原理实验报告词法分析器(内含源代码) 编译原理实验(一) --词法分析器 实验描述 运行环境:vc++2008 对某特定语言A ,构造其词法规则. 该语言的单词符号包括: 1该程序能识别的单词符号 ...

  5. c语言词法分析器实验原理,词法分析器的设计与实现 编译原理实验报告.doc

    词法分析器的设计与实现 编译原理实验报告 中北大学软件学院 实 验 报 告 专 业 软件工程 课程名称 编译原理 学 号 姓 名 辅导教师 张静 成绩 实验日期2015.5.19实验时间14:00~1 ...

  6. 编译原理实验(三)词法语法分析综合设计

    版权声明:本文为原创文章,版权归 Geekerstar 所有. 本文链接:http://www.geekerstar.com/technology/105.html 除了有特殊标注文章外欢迎转载,但请 ...

  7. 编译原理实验报告:词法分析

    NCWU慎用 1.实验要求 (1)从源程序文件中读取有效字符流并将其分析识别单词符号,转换成二元组内部表示形式输出. (2)可视化方式展示词法分析识别过程或者词法分析器工作原理(选做). (3)实验时 ...

  8. 编译原理实验一 TINY语言的词法分析

    实验一 TINY语言的词法分析 一.实验目的 (评价依据,描述是否准确到位) 构造tiny语言的词法分析器(扫描器),要求利用第三方的lex工具进行构造.实验结果:构造出的扫描器,能够读入教材样例中给 ...

  9. 计算机原理实验报告三,计算机组成实验报告3

    <计算机组成实验报告3>由会员分享,可在线阅读,更多相关<计算机组成实验报告3(6页珍藏版)>请在人人文库网上搜索. 1.计算机组成实验报告3淮海工学院计算机工程学院 实验报告 ...

最新文章

  1. Scala for循环示例
  2. 未能解析引用的程序集……因为它对不在当前目标框架……
  3. 高级UI-画笔Paint
  4. os.environ详解
  5. 大数据技术 思维导图
  6. 谷歌浏览器的下载位置如何设置 Chrome浏览器下载路径设置方法简述
  7. SSL常用专业缩略语汇总
  8. 7 款神秘的开源中间件!
  9. ndoejs后台查询数据库返回的值-进行解析
  10. PageAdmin CMS网站建设教程:自定义字段如何关联栏目表
  11. 宇枫资本投资理财的几大定律
  12. unity学习笔记-换装系统
  13. Ubuntu系统下搭建FTP服务器图解
  14. IGBT静态参数测试
  15. 快速查看MySQL数据库的版本号
  16. 全球与中国直流小型功率继电器市场现状及未来发展趋势
  17. No outgoing sequence flow of the exclusive gateway ‘XXX‘ could be selected for continuing the proces
  18. 试论社会学专业定×××方法课程教学现状及改革途径
  19. 菜鸟笔记---axure9 动态面板 移动端上下滑屏
  20. win10环境安装使用svn客户端和服务端

热门文章

  1. 给出某一个日期,用SQL分别计算日、月、季度、年下的同比环比
  2. python加密方式-AES加密ECB模式
  3. linux 易语言窗口程序_易语言开发Linux程序
  4. PS2手柄模控制ESP32控制舵机 ArduinoPWM控制
  5. 求曲线某一点处的曲率圆
  6. Mac打开所有分辨率的HiDPI
  7. mysql中now()函数在oracle中怎么用
  8. 用VScode做vue开发好用的小工具(推荐)
  9. JS实现一键展开、折叠所有树节点
  10. 视频无损放大软件Topaz Video Enhance AI for Mac更新啦