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

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

ID:35245679

大小:379.50 KB

页数:31页

时间:2019-03-22

编译原理实验报告词法分析_第1页
编译原理实验报告词法分析_第2页
编译原理实验报告词法分析_第3页
编译原理实验报告词法分析_第4页
编译原理实验报告词法分析_第5页
资源描述:

《编译原理实验报告词法分析》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、编译原理实验报告词法分析器学院:计算机科学与技术时间:2012/6/9一、问题描述选择计算机高级程序语言之一——C语言,运用恰当的词法分析技术线路,设计和实现其对应的词法分析器提示:技术线路选择如下两种之一:正则式→NFA→DFA→minDFA→程序设计或正则文法→NFA→DFA→minDFA→程序设计。要求:分析器输出结果存入到磁盘文件中,具有出错处理功能。二、系统分析编译原理涉及词法分析,语法分析,语义分析及优化设计等各方面。词法分析阶段是编译过程的第一个阶段,是编译的基础。这个阶段的任务是从左到右一个字符一

2、个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。词法分析程序实现这个任务。从左到右逐个字符对构成源程序的字符串进行扫描,依据词法规则,识别出一个一个的标记(token),把源程序变为等价的标记串序列。执行词法分析的程序称为词法分析器,也称为扫描器。本次实验,我选择用C++来实现这个词法分析器。程序语言的单词符号一般分为以下六种:关键字、标识符、常量、运算符、界符、字符串词法分析程序所输出的单词符号常常采用以下二元式表示:(单词种别,单词自身的值),单词的种别是语法

3、分析所需要的信息,而单词自身的值是编译其他阶段需要的信息。单词的种别可以用整数编码表示,比如标识符编码为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",

4、"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等标识。而单个字符常

5、量并没有考虑。也就是‘a’表示的并不是对应的数值。(3)运算符和界符:本次实验设计的运算符和界符很多,基本将所有的运算符都设计进去了。其中包括+,++,+=,-,-=,->,--,*,*=,/,/=,[,],<,<=,>,>=,=,==,>>,>>=,<<,<<=,!=,&,&&,&=,~,

6、,

7、

8、,

9、=,%,%=,,;但是还是有个别的运算符没有设计进去,比如?:,这是个三目的运算符,设计起来估计很麻烦,所以就没设计,还有就是强制类型转换(类型),取地址&,指针*,指针的.运算都没有很好的设计思考,都是直接忽略了

10、。(4)字符串:实验中并没有考虑字符串的读写,直接将他设计成了标识符(5)标识符:除了上述说的,还有就是一些不该出现的符号,比如`@#$等,剩下的基本上都是标识符了。利用该词法分析器完成对源程序字符串的词法分析。输出形式是源程序的单词符号二元式的代码,并保存到文件中。根据以上的分类与分析,将该语言中的单词符号及种别编码如下表所示。单词符号及种别编码单词符号种别编码单词符号种别编码char1*54int2/55short3(56long4)57signed5[58unsigned6]59float7{60doubl

11、e8}61const9,62void10:63volatile11;64enum12.65struct13>66union14<67typedef15>=68auto16<=69extern17==70static18!=71register19>>72if20>>=73else21<<74switch22<<=75case23&76default24&&77while25&=78do26

12、79for27

13、

14、80break28

15、=81continue29~82goto30++83return31--84sizeo

16、f32->85#include33+=86#define34-=87ID标识符40*=88NUM常量50/=89=51%=90+52^=91-53%92?95“93‘94采用的技术路线是正则式→NFA→DFA→minDFA→程序设计一、系统设计l={a~z,A~Z};d={0~9};1.关键字:关键字是最好识别的,他都是由字母组成,在程序中,只要写一个小程序将设计的34个

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。