实验一词法分析器设计.doc_第1页
实验一词法分析器设计.doc_第2页
实验一词法分析器设计.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验一词法分析器设计【实验目的】1 掌握生成词法分析器的方法,加深对词法分析原理的理解。2 掌握设计、编制并调试词法分析程序的思想和方法。3 本实验是高级语言程序设计、数据结构和编译原理中词法分析原理等知识的综合。【实验内容及要求】1 选择一种熟悉的高级语言(如C语言,C+,VB或VC等),设计、编写一个词法分析子程序。2 待分析的源程序为一个简单的C语言程序,如下所示: main() int x,a,b;float y,c,d; x = a + b; y = c / d; if(xy) x = 10; else y=100;将该源程序的源文件经词法分析后输出以二元组形式表示的单词符号序列。3 编写的程序具有一定的查错能力。提交的实验报告中要有实验名称、实验目的、实验内容、实验程序清单、调试过程和运行结果,程序的主要部分作出功能说明,并有实验收获体会或改进意见等内容。4 实验程序完成后在实验课上让老师检查通过后,将实验报告和程序打包发送到:邮件命名规则:学号.姓名.实验一,例如:0925111016.陈培发.实验一,每个实验占总成绩的5分。【实验预习提示】1.词法分析器的功能和输出格式词法分析器的功能是输入以字符串表示的源程序,输出单词符号或单词符号序列。词法分析器的单词符号常常表示成以下的二元组(单词的种别码,单词符号的属性值)。本实验中,采用的是一符一种种别码的方式。2.调试程序文法的EBNF(扩展巴科斯范式)表示如下:= main():= ;:= |:= =:= ifthen:= while:= := +|:= *|/:= |:= := := |:= |=|=|=|!=:= A|B|C|Z|a|b|c|z (要求不区分大小写):= 0|1|2|3|4|5|6|7|8|93.“超前搜索”方法词法分析时,常常会用到超前搜索方法。如当前待分析字符串为“a+”,当前字符为,此时,分析器倒底是将其分析为大于关系运算符还是大于等于关系运算符呢?显然,只有知道下一个字符是什么才能下结论。于是分析器读入下一个字符+,这时可知应将解释为大于运算符。但此时,超前读了一个字符+,所以要回退一个字符,词法分析器才能正常运行。在分析标识符,无符号整数等时也有类似情况。4.词法分析程序主程序的算法思想 算法的基本思想是根据扫描到单词符号的第一个字符的种类,拼写出相应的单词符号,其实现的基本任务是从字符串表示的源程序中识别出相应的具有独立意义的单词符号。主程序示意图如图1.1所示。初始化并设置初始值调用扫描子程序输出单词二元组输入串结束了吗?YN结束 图1.1 词法分析主程序示意图其中设置初始值包括两个方面:(1)关键字表的初值关键字作为特殊标识符处理,把它们预先安排在一张表中,称这张表为关键字表,当扫描程序识别出标识符时,查关键字表,若能查找到匹配的单词,则该单词是关键字,否则为一般标识符。关键字表为一个字符串数组,其描述为:char*KEY_WORDS8=“main

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论