一、 实验目的

  1. 构造tiny语言的词法分析器(扫描器),要求利用第三方的lex工具进行构造。构造出的扫描器,能够读入tiny语言的示例代码,分解成token输出。
  2. 掌握使用lex工具
  3. 掌握构造词法分析器
  4. 掌握lex的输入文件的编写

二、 实验设计
掌握词法分析器的构造和使用,学会使用 lex 工具来构造词法分析程序。
1.选择教材《程序清单2-3 TINY语言中的样本程序》作为输入

2.选择教材中《程序清单2-4》作为输出并做一些输入输出文件格式的改进

3.准备好了实验所需工具
4.程序设计
4-1:将[0-9]+作为digit 匹配数字
4-2:将read |if| then| repeat | until |write | end 作为keyword 匹配关键字
4-3:将[a-zA-Z]+作为letter 匹配单词字母
4-4:将{[^}]} 作为comment匹配注释
4-5;将":="|"="|"+"|"-"|"
"|"/"|">"|"<“作为operator 匹配操作符
4-6:将[” “|\t|\n]+ 作为ignore匹配空格、换行、制表符 进行忽略
4-7:将[”,"|";"]+ 作为other 正常输出
4-8:将匹配到的token,根据书本给出的格式进行输出到屏幕上
三、 内容和步骤
1代码:
2、步骤:
(1)在一个空文件夹内建一个print.l 文件,并键入代码

(2)使用flex命令,对print.l文件进行编译。生成lex.yy.c文件

(3)使用dev编译器编译lex.yy.c文件,生成.exe文件。

3结果:
(1)输入

(2)过程中

(3)、输出

四、 实验结论:
1 理论基础
(1) 关于LEX工具的使用方法
(2) 掌握LEX输入文件的格式
LEX输入文件由3个部分组成:定义集、规则集、以及辅助程序集或用户程序集。这3个部分由双百分号分开
(3)了解词法分析器的内部工作原理
(4)了解TINY语言的基本关键字和结构

TINY 的单词记号分为三种典型类型:保留字、特殊符号和“其他”单词。保留字一共 8 个,特殊符号包括运算符和界符:分别是四种基本的整数运算符号,两种比较符号(等号和小于),以及括号、分号和赋值号。除赋值号是两个字符的长度以外,其余均为一个字符 TINY 的标识符是一个或多个字母的序列。数是一个或多个数字的序列。除了单词之外,TINY 还要遵循以下词法规则:注释应放在花括号{…}中,且不可嵌套;代码应是自由格式;空白符由空格、制表位和新行组成。

2、分析和总结
问题:编译lex.yy.c文件时候想使用dos命令发现在windows环境下难以完成,于是下载了devc++编译器完成该部分任务。
结果:功能良好,可以完成预定的要求。
总结:通过这次实验,我对词法分析器有了进一步的了解,可以把理论知识应用于实验中。通过这次语义分析的实验, 我对高级语言的学习有了更深的认识 ,了解得更透彻。
3、对工具的评价
作为lex&yacc安装的集合,unxutils挺方便的,可以满足基本要求。

编译原理——实验壹——TINY语言的词法分析相关推荐

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

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

  2. 《编译原理》实验报告——TINY语言的词法分析

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

  3. 中山大学编译原理实验——实现PL0语言的编译程序(无坑有缩进版)

    PL0-Compiler 代码传送门 ps:吐槽一下,老师给的代码实在是太烂了.又没缩进又多编译错误,除此之外还有很多细节漏掉关键字,总之就很多坑,所以这里发一个无坑带缩进版,方便大家学习. 中山大学 ...

  4. 编译原理——实验壹预习——TINY语言的词法分析

    实验目的 构造tiny语言的词法分析器(扫描器),要求利用第三方的lex工具进行构造.实验结果:构造出的扫描器,能够读入教材样例中给出的tiny语言的示例代码,分解成token输出. Experime ...

  5. 编译原理实验代码c语言,编译原理实验 简单词法分析(含源代码和实验结果)

    可直接运行 原创!! 附录一 实验报告样式 <编译原理>实验报告 实验2 简单词法分析 姓名 陈婷婷 学号 1009050121 班级 计科1001班 时间: 2012/4/5 地点:文波 ...

  6. 编译原理实验一预习报告

    实验一 TINY语言的词法分析 实验目的 构造tiny语言的词法分析器(扫描器),要求利用第三方的lex工具进行构造.实验结果:构造出的扫描器,能够读入教材样例中给出的tiny语言的示例代码,分解成t ...

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

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

  8. 编译原理实验一 词法分析程序设计与实现

    一.实验目的 通过编写和调试一个词法分析程序,掌握在对程序设计语言的源程序进行扫描的过程中,将字符流形式的源程序转化为一个由各类单词构成的序列的词法分析方法. 二.基本实验内容与要求 假定一种高级程序 ...

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

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

最新文章

  1. 「linux网络管理」OSI模型
  2. System.Data.SqlClient.SqlException:“对象名 'customer' 无效。
  3. Fatal error in launcher: Unable to create process using ‘“d:\python3.6\python.exe“ “D:\python3.6\Sc
  4. 面试官系统精讲Java源码及大厂真题 - 27 Thread 源码解析
  5. centos7 安装 openssl和openssl升级
  6. ORB_SLAM 编译过程详解
  7. 大数据导论章节答案_大数据概论智慧树章节答案
  8. 自动化测试环境搭建--Python及selenium
  9. winHex创建指定大小二进制文件.bin(数据为全0或全FF或自己填充)并带winHex软件下载包
  10. Maya2018生成pyd文件
  11. Django项目定时任务(django-crontab)
  12. python里offset啥意思_深度理解Jquery 中 offset() 方法
  13. 基于知识图谱的智能问答机器人技术架构
  14. 金融数据分析与挖掘具体实现方法
  15. elasticsearch分词练习、自定义分词器练习
  16. matlab算kdj指标,KDJ指标(随机指标)详解
  17. storm DRPC问题
  18. oracle sql优化的几条法则
  19. Linux命令date命令
  20. NOSQL,MongoDB分布式集群架构

热门文章

  1. Gauss elimination Template
  2. 21.Merge Two Sorted Lists 、23. Merge k Sorted Lists
  3. 第4阶段——制作根文件系统之分析init_post()如何启动第1个程序(1)
  4. POJ 3268 Silver Cow Party (最短路径)
  5. 实验二:SQL server 2005高可用性之----数据库镜像
  6. 排序算法(一)--桶排序、冒泡、快排(JAVA)
  7. Java calendar加减时间
  8. Ambari删除服务报错之CSRF protection is turned on
  9. python 只去除英文_如何使用 Python 制作词云(Word Cloud)-英文词云篇
  10. java开发技术有什么意义,零基础学Java开发技术有哪些优势和好处?