[精品]词法分析器.doc

[精品]词法分析器.doc

ID:56184135

大小:104.00 KB

页数:9页

时间:2020-03-18

[精品]词法分析器.doc_第1页
[精品]词法分析器.doc_第2页
[精品]词法分析器.doc_第3页
[精品]词法分析器.doc_第4页
[精品]词法分析器.doc_第5页
资源描述:

《[精品]词法分析器.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、词法分析器报告课程编译原理实验项目词法分析器专业年级计科07级姓名李专学号0705010136指导教师实验时间2010-6-18实验成绩—、任务与目的•任务:1、使用C/C++程序设计语言和递归下降子程序的方法编写该函数绘图语言的词法分析器。并要求设计一个词法分析器的测试小程序來调用自己编写的词法分析器测试各种不同的输入。2、词法分析的任务是对输入的字符串形式的源程序按顺序进行扫描,在扫描的同时,根据源语言的词法规则识别具有独立意义的单词(符号),并产生与其等价的属性字流(内部编码)作为输出。通常属性字流即是对识别的单词给出的标记符号的集合。•目

2、的:通过自己动手编写词法分析器,掌握记号、模式与单词,掌握•正规式与正规集,掌握有限自动机,掌握如何从正规式到词法分析器的各种算法。理解如何理论联系实际以及明口理论与实际的羞别。二、分析与设计词法分析器的木质:基本任务是进行模式匹配,其关键在于分析过程屮的模式说明和模式识别方法,在编译分析屮即正规表达式和有限自动机。构造词法分析器方法:1、手工构造;2、利用自动生成工具LEX。但是无论用那种方法,其内在工作原理都是相同的,都要经过正规式到最小状态DFA的转换。词法分析器可有两种:一-种是把词法分析器作为语法分析的一个子程序,一种是把词法分析器作为

3、编译程序的独立一遍.在前一种恬况下,词法分析器不断地被语法分析器调用,毎调用一次词法分析器将从源程序的字符序列拼出一个单词,并将其Token值返冋给语法分析器.后一种情况则不同,词法分析器不是被语法分析器不断地调用,而是一次扫描全部单词完成编译器的独立一遍任务。词法分析程序-•般具有如下功能:读入字符串形式的源程序;识别出具有独立意义的最小语法单位:单词。事实上,山正规表达式到最小化DFA的转换源程序屮的测试生成串部分就是对所输入的单词进行判断,看其是否能被生成的DFA接受(也就是这个单词是否符合正规式定义的要求)。这本质上就是一个简单的词法分析

4、。定义某种语言的单词,并给出编号。该语言单词包括:保留字、运算符、标识符、常最、格式符等。根据给定的语言子集构造词法分析器。输出为中间文件。在设计时为了便于理解,不使用内部编码而用枚举对同类型的单词进行标识。例如所育的常杲统一用“CONST_ID”对其进行•标识,当扫描时遇到常最就输出该常最的值和“CONST_ID”标识。这里给出词法分析程序大概的设计方法:1、根据要求写出词法分析的正规文法G;2、根据正规文法G,写出正则式RE;3、根据正则式RE,画出NFA;4、将NFA转化为DFA;5、将DFA转化为mininumstateDFA:6、min

5、inumstateDFA就是词袪分析程序的流程图,根据此流程图编写相应的词袪分析程序。以下是较为详细的设计:%1总体结构与模块划分测试模块(scannermain.cpp)词法分析器模块(scanner.h&scanner.cpp)%1重要数据结构・枚举记号种类onumToken_Type{ORIGIN,SCALE,ROT,IS,TO,STEP,DRAW,FOR,FROM,//保留字T,//参数SEMICO,LBRACKET,RBRACKET,COMMA,//分隔符号PLUS,MINUS,MUL,DIV,卩OWER,//运算符FUNC,//函数C

6、ONST.ID,〃常数NONTOKEN,//空记号ERRTOKEN〃出错记号};•记号与符号表结构structTokon{〃记号的类别//构成记号的字符串//若为常数,则是常数的值〃若为函数,则是函数的指针Token_Typetype;char*lexeme;doubIevalue;MathFuncPtrEuncPtr;};•符号表staticTokenTokenTab[]={{C0NST_ID,"PI",3.1115926,0},{C()NST_ID,〃E〃,2.7182&0},(T,T,0.0,0},{FUNC,"SIN",0.0,sin},

7、{FUNC,"COS",0.0,cos},{FUNC,”TAN",0.0,tan},{FUNC,"LN",0.0,log},(FUNC,"EXP”,0.0,exp},{FUNC,"SQRT",0.0,sqrt},{ORIGIN,"ORIGIN",0.0,0},(SCALE,"SCALE",0.0,0},{ROT,"ROT",0.0,0},(IS,"IS",0.0,0},{FOR,"FOR",0.0,0},{FROM,"FROM",0.0,0},(TO,"TO",0.0,0},{STEP,"STEP",0.0,0},{DRAW,"DRAW",0.0

8、,0}};%1关键思想与算法•构造NFA的Thompson算法•模拟WA的“并行”算法•从NFA构造DFA:构造DFA的子集法,smov

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

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

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