- 1、本文档共44页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理,实验报告,词法分析(共10篇)
编译原理,实验报告,词法分析(共10篇)
编译原理实验报告词法分析
编译原理实验报告
词法分析器
学院:计算机科学与技术
时间:2012/6/9
一、 问题描述
选择计算机高级程序语言之一 —— C语言,运用恰当的词法分析技术线路,设
计和实现其对应的词法分析器
提示:技术线路选择如下两种之一:
正则式→NFA→DFA→min DFA→程序设计
或 正则文法→NFA→DFA→min DFA→程序设计。
要求:分析器输出结果存入到磁盘文件中,具有出错处理功能。
二、 系统分析
编译原理涉及词法分析,语法分析,语义分析及优化设计等各方面。词法分析阶段是编译过程的第一个阶段,是编译的基础。这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。词法分析程序实现这个任务。从左到右逐个字符对构成源程序的字符串进行扫描,依据词法规则,识别出一个一个的标记(token),把源程序变为等价的标记串序列。执行词法分析的程序称为词法分析器,也称为扫描器。本次实验,我选择用C++来实现这个词法分析器。
程序语言的单词符号一般分为以下六种:关键字、标识符、常量、运算符、界符、字符串
词法分析程序所输出的单词符号常常采用以下二元式表示:(单词 种别,单词自身的值),单词的种别是语法分析所需要的信息,而单 词自身的值是编译其他阶段需要的信息。
单词的种别可以用整数编码表示,比如标识符编码为 1,程序最 后输出的形式应为:
关键字 int(2, int )标识符 t_val (1 ,t_val)常量 3.14e+2 (3 ,3.14e+2) 其中,本次实验设计的如下: (1)关键字有34个:分别包括
char,int,short,long,signed,unsigned,float,double,const,void,volatile,enum,struct,union,typedef,auto,extern,static,register,if,else,switch,case,default,while,do,for,break,continue,goto,return,sizeof,#include,#define
前面32个是标准C的关键字,后两个是预编译的关键字。
(2)常量分为:小数,整数,浮点数,字符。本次实验中,设计了小数,整数和浮点数,但是都没有包含后面的U,L,UL等标识。而单个字符常量并没有考虑。也就是‘a’表示的并不是对应的数值。
(3)运算符和界符:本次实验设计的运算符和界符很多,基本将所有的运算符都设计进去了。其中包括 +,++,+=, -,-=,-,--, *,*=, /,/=,[,],
,=, , = ,=,==,,=,,=,!=,amp;,amp;amp;,amp;=,~,|,||,|=,%,%=, ,;
但是还是有个别的运算符没有设计进去,比如?:,这是个三目的运算符,设计起来估计很麻烦,所以就没设计,还有就是强制类型转换(类型),取地址amp;,指针*,指针的.运算都没有很好的设计思考,都是直接忽略了。
(4)字符串:实验中并没有考虑字符串的读写,直接将他设计成了标识符
(5)标识符:除了上述说的,还有就是一些不该出现的符号,比如`@#$等,剩下的基本上都是标识符了。
利用该词法分析器完成对源程序字符串的词法分析。输出形式是源程序的单词符号二元式的代码,并保存到文件中。
根据以上的分类与分析,将该语言中的单词符号及种别编码如下表所示。
采用的技术路线是正则式→NFA→DFA→min DFA→程序设计
三、 系统设计
l={a~z,A~Z};d={0~9}; 1.
关键字:关键字是最好识别的,他都是由字母组成,在程序中,只要写一个小程
序将设计的34个关键字保存在一个string类型的vector中,然后做一次循环,将字符串逐个与34个关键字对比,相同则取出对应的种别编码,存入事先设计好的vector中。
本次设计中关键字有34个:分别包括
char,int,short,long,signed,unsigned,float,double,const,void,volatile,enum,struct,union,typedef,auto,extern,static,register,if,else,switch,case,default,while,do,for,break,continue,goto,return,sizeof,#include,#define
前面32个是标准C的关键字,后两个是预编译的关键字。 2.
标识符:标识符的正规式为:(l|_)
您可能关注的文档
最近下载
- 机电安装工程调试方案.doc VIP
- 2024-2025学年初中数学八年级上册青岛版(2024)教学设计合集.docx
- 化工单元操作(浙大)中国大学MOOC慕课 章节测验期末考试客观题答案.docx VIP
- 2023-2024学年湖南省郴州市七年级(下)期末数学试卷(含答案).pdf VIP
- 酒店宾馆客房卫生检查表.docx VIP
- 标准图集-03S402-室内管道支架及吊架.pdf VIP
- 2024铁路隧道机械化施工技术指南.pdf
- 2024年中考语文备考之八年级上学期名著阅读《红星照耀中国》要点梳理+中考真题.docx VIP
- 《新闻编辑》课程考试复习题库(含答案).docx VIP
- 《建设项目工程总承包计价规范》解读与应用 (正式版).pptx
文档评论(0)