欢迎来到天天文库
浏览记录
ID:8804070
大小:86.00 KB
页数:25页
时间:2018-04-08
《《编译原理》实验指导书-2015》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、武汉科技大学计算机科学与技术学院编译原理实验指导书实验一词法分析器设计【实验目的】1.熟悉词法分析的基本原理,词法分析的过程以及词法分析中要注意的问题。2.复习高级语言,进一步加强用高级语言来解决实际问题的能力。3.通过完成词法分析程序,了解词法分析的过程。【实验内容】用C语言编写一个PL/0词法分析器,为语法语义分析提供单词,使之能把输入的字符串形式的源程序分割成一个个单词符号传递给语法语义分析,并把分析结果(基本字,运算符,标识符,常数以及界符)输出。【实验要求】1.要求绘出词法分析过程的流程图。2.根据词法分析的目的以及内容,确定完成分析过程
2、所需模块。3.写出每个模块的源代码,并给出注释。4.整理程序清单及所得结果。【说明】运行成功以后,检查程序,并将运行结果截图打印粘贴到实验报告上。辅助库函数scanerLib设计以及使用说明:下面内容给出了一个辅助库函数的接口说明以及具体实现。接口设计Ø//字符类classToken{TokenTypetype;Stringstr;Intline;}//词法分析结果输出操作类classTokenWriter{ArrayListtokens;//用来记录所识别出来的tokenTokenWriter();//构造函数指定输入文件名,创建文件输出流Voi
3、dAdd(Token);//将词法分析器中分析得到的Token添加到tokens中WriteXML();//将tokens写出到目标文件.xml中}//词法分析操作词法分析生成文件接口<暂时不需要对该类的操作;下一步做语法分析的时候使用>classTokenReader{ArrayListtokens;TokenReader();//构造函数输入文件名;初始化TokenNext();//返回下一个Token; TokenBack();//回退一个Token,并返回回退后的当前TokenReadXML();//从文件中读出所有Token到toke
4、ns}使用:TokenWritertw=newTokenWriter();While(){Tokentok=getToken();Tw.Add(tok);}tw.WriteXML();TokenReadertr=newTokenReader();Tok,ReadXML();Tokentok=newToken();While(){Tok=tr.Next();Process(tok);}类图:TokenWriter-tokens:ArrayList-scanfile:string+TokenWriter(string)+Add(Token):void+
5、WriteXML():voidTokenReader-tokens:ArrayList-scanfile:string-pos:int+TokenWriter(string)+Next():Token+Back():Token+WriteXML():void操作类库源码ØToken.cs//字符类ReservedWord.cs//保留字类TokenWriter.cs//结果输出TokenReader.cs//操作词法分析生成文件,进行下一步的工作使用时注意事项:1)定义文法中涉及到的所有字符类型,修改Token.cs文件中publicenumTok
6、enType{//自己定义的所有字符类型};2)对于保留字,在词法分析的过程中进行定义,例如:HashtablereservedWords=newHashtable();reservedWords.Add("if",TokenType.IF);reservedWords.Add("else",TokenType.ELSE);reservedWords.Add("while",TokenType.WHILE);reservedWords.Add("return",TokenType.RETURN);reservedWords.Add("void",T
7、okenType.VOID);reservedWords.Add("int",TokenType.INT);可以继续添加其它的保留字;也可以将保留字表定义为其它的类型结构进行存储。3)进行词法分析,词法分析的过程中,可以使用Token、ReservedWord的类型定义以及TokenWriter类中给出的接口函数进行操作。4)同时还给出了一个较复杂的语言文法的词法分析程序scanner.cs。示例程序举例:设置输入:prime.cm输出:prime.xml实验二LL(1)语法分析程序设计【实验目的】1.熟悉判断LL(1)文法的方法及对某一输入串的分
8、析过程。2.学会构造表达式文法的预测分析表。【实验内容】编写一个语法分析程序,对于给定的输入串,能够判断识别该串是否为给定
此文档下载收益归作者所有