- 1、本文档共36页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
词法分析2
《 编 译 原 理 》
实 验 报 告
实验具体内容如下:
序号 实验名称 实验一 词法分析设计 实验二 LL(1)预测分析 实验三 LR(1)预测分析
一、实验课的性质和目的:
(1)深刻理解程序语言编译系统的结构及各部分的功能。
(2)熟练掌握设计和构造程序语言编译系统的基本原理和技术。
(3)能独立编写清晰、工整、结论正确的编译原理的源程序。
(4)能学会上机进行正确调试,并进行程序修改。即培养发现程序错误,排除错误的能力和经验。
二、实验的重点与难点:
对词法分析设计、语法分析设计和中间代码的产生、代码优化等是本课程实践性环节的重点和难点。
三、实验教学环境:
通过本课程的课内实验,使学生上机编程、调试来验证和巩固目 录 5
实验一:词法分析设计 6
实验二:LL(1)分析法 13
实验三:LR(1)分析法 16
实验一 词法分析设计
一、实验目的
通过本实验的编程实践,使学生了解词法分析的任务,掌握词法分析程序设计的原理和构造方法,使学生对编译的基本概念、原理和方法有完整的和清楚的理解,并能正确地、熟练地运用。
二、实验内容
用VC++/VB/JAVA语言实现对C语言子集的源程序进行词法分析。通过输入源程序从左到右对字符串进行扫描和分解,依次输出各个单词的内部编码及单词符号自身值;若遇到错误则显示“Error”,然后跳过错误部分继续显示 ;同时进行标识符登记符号表的管理。
以下是实现词法分析设计的主要工作:
(1)从源程序文件中读入字符。
(2)统计行数和列数用于错误单词的定位。
(3)删除空格类字符,包括回车、制表符空格。
(4)按拼写单词,并用(内码,属性)二元式表示。(属性值——token的机内表示)
(5)如果发现错误则报告出错
(6)根据需要是否填写标识符表供以后各阶段使用。
单词的基本分类:
关键字:由程序语言定义的具有固定意义的标识符。也称为保留字例如 if、 for、while、printf ; 单词种别码为1。
标识符:用以表示各种名字,如变量名、数组名、函数名;
常数: 任何数值常数。如 125, 1,0.5,3.1416;
运算符:+、-、*、/;
关系运算符: 、=、= 、、=、;
分界符: ;、,、(、)、[、];
三、词法分析实验设计思想及算法
1、主程序设计考虑:
程序的说明部分为各种表格和变量安排空间。
在具体实现时,将各类单词设计成结构和长度均相同的形式,较短的关键字后面补空。
k数组------关键字表,每个数组元素存放一个关键字(事先构造好关键字表)。
s 数组------存放分界符表(可事先构造好分界符表)。为了简单起见,分界符、算术运算符和关系运算符都放在s表中(编程时,应建立算术运算符表和关系运算符表,并且各有类号),合并成一类。
id 和ci 数组分别存放标识符和常数。
instring 数组为输入源程序的单词缓存。
outtoken 记录为输出内部表示缓存。
还有一些为造表填表设置的变量。
主程序开始后,先以人工方式输入关键字,造k表;再输入分界符等造 p 表。
主程序的工作部分设计成便于调试的循环结构。每个循环处理一个单词;接收键盘上送来的一个单词;调用词法分析过程;输出每个单词的内部码。
例如,把每一单词设计成如下形式: (type,pointer)
其中type指明单词的种类,例如:Pointer指向本单词存放处的开始位置。
还有一些为造表填表设置的变量。
主程序开始后,先以人工方式输入关键字,造k表;再输入分界符等造 p 表。
主程序的工作部分设计成便于调试的循环结构。每个循环处理一个单词;接收键盘上送来的一个单词;调用词法分析过程;输出每个单词的内部码。
例如,把每一单词设计成如下形式: (type,pointer)
其中type指明单词的种类,例如:Pointer指向本单词存放处的开始位置。
词法分析设计流程图
2、词法分析过程考虑
根据输入单词的第一个字符(有时还需读第二个字符),
判断单词类,产生类号:以字符k表示关键字;id表示标识符;
ci表示常数;s 表示分界符。
对于标识符和常数,需分别与标识符表和常数表中已登记的元素相比较,如表中已有该元素,则记录其在表中的位置,如未出现过,将标识符按顺序填入数组 id 中,将常数变为二进制形式存入数组中 ci 中,并记录其在表中的位置。
lexical 过程中嵌有两个小过程:一个名为 getchar,其功能为从 instring 中
您可能关注的文档
- 齿轮泵测量建模.doc
- 齿轮泵课程设计.doc
- 齿轮泵维护检修规程.doc
- 齿轮泵设计.docx
- 齿轮传动教案.doc
- 齿轮参数计算.docx
- 齿轮泵设计课程设计.doc
- 齿轮传动系统的故障诊断方法研究.doc
- 齿轮的检测.doc
- 诚信库申报操作手册.doc
- 2025年贵州工业职业技术学院高职单招高职单招英语2016-2024历年频考点试题含答案解析.docx
- 2025年西昌民族幼儿师范高等专科学校高职单招职业适应性测试近5年常考版参考题库含答案解析.docx
- 2025年西藏警官高等专科学校高职单招语文2018-2024历年参考题库频考点含答案解析.docx
- 2025年贵州工商职业学院高职单招职业技能测试近5年常考版参考题库含答案解析.docx
- 2025年贵州工商职业学院高职单招职业适应性测试近5年常考版参考题库含答案解析.docx
- 2025年贵州农业职业学院高职单招数学历年(2016-2024)频考点试题含答案解析.docx
- 2025年贵州工商职业学院高职单招高职单招英语2016-2024历年频考点试题含答案解析.docx
- 2025年贵州工商职业学院高职单招语文2018-2024历年参考题库频考点含答案解析.docx
- 2025年许昌职业技术学院高职单招数学历年(2016-2024)频考点试题含答案解析.docx
- 2025年许昌职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析.docx
最近下载
- 桥梁箱梁吊装专项施工方案汇报材料.ppt
- 2023中航集团(国航股份)信息管理部社会招聘笔试备考题库及答案解析.docx
- 数字化与绿色技术促进可持续发展专题政策研究报告(2024).pdf
- 102word格式支持编辑修改也支持打印使用小学生儿童成长档案幼儿园模板个人电子版a4记录纪念手册.docx VIP
- 赡养协议书范文6篇.docx VIP
- 高中地理培训心得5篇 .pdf
- “双减”政策背景下小学课后服务现状及优化策略研究--以S小学为例.pdf
- 047word格式支持编辑修改也支持打印使用小学生儿童成长档案幼儿园模板个人电子版a4记录纪念手册.docx VIP
- 部编版六年级语文下册《北京的春节》教学设计.doc VIP
- 2019年国航股份管理部IT人才招聘模拟试题及答案解析.docx VIP
文档评论(0)