《编译方法》实验指导书.doc

《编译方法》实验指导书.doc

ID:50295698

大小:252.00 KB

页数:35页

时间:2020-03-07

《编译方法》实验指导书.doc_第1页
《编译方法》实验指导书.doc_第2页
《编译方法》实验指导书.doc_第3页
《编译方法》实验指导书.doc_第4页
《编译方法》实验指导书.doc_第5页
资源描述:

《《编译方法》实验指导书.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、目录实验一词法分析器设计1【实验目的】1【实验内容】1【流程图】1【源代码】2【程序部分截图】18实验二LL(1)语法分析程序设计20【实验目的】20【实验内容】20【实验步骤和要求】20【流程图】20【源代码】21【程序截图】32实验一词法分析器设计【实验目的】1.熟悉词法分析的基本原理,词法分析的过程以及词法分析中要注意的问题。2.复习高级语言,进一步加强用高级语言来解决实际问题的能力。3.通过完成词法分析程序,了解词法分析的过程。【实验内容】用JAVA语言编写一个PL/0词法分析器,为语法语义分析提供单词,使之能把输入的字符串形式的源程序分割成一个个单词符号传递给

2、语法语义分析,并把分析结果(基本字,运算符,标识符,常数以及界符)输出。初始化词法分析器【流程图】调用语法分析函数判断文字是否读完YYN从文本中读入一行字符,存于一个字符串中输出二元组及常数表,标识符表N从字符串中读出一个字符程序结束字母符号判断为何种字符不断读入,直到出现非数字符号看是否有算符或运算符与之匹配不断读入,直到出现非字母或数字符号YN判断是否为保留字将该项插入常数表中报错,出现非法字符增加一个对应的二元组YN将该项插入标识符表中增加一个对应的二元组判断是否到行尾【源代码】packageaccidence_analyse;importjava.io.*;im

3、portjava.util.*;importbuffer.*;publicclassAccidenceAnalyser{privatejava.io.FileSourceFile;privatejava.io.FileReserveFile;privatejava.io.FileClassFile;privatejava.io.FileOutputFile;publicPretreatmentpretreatment;publicKeyWordTablekeyWordTable;publicClassIdentityclassIdentity;publicScaners

4、caner;publicConcreteScanBufferFactorycsbFactory;/***2)词法分析器主程序*/publicAccidenceAnalyser(){System.out.println("[INFOR]已经建立词法分析器!");}publicvoidinitAA(){//创建缓冲工厂this.csbFactory=newConcreteScanBufferFactory();//创建字符串扫描对象scaner=newScaner(this);//创建pre处理对象pretreatment=newPretreatment(SourceFil

5、e,this);//创建关键字表对象keyWordTable=newKeyWordTable(ReserveFile);//创建对象种别码表对象classIdentity=newClassIdentity(ClassFile);System.out.println("[INFOR]已经初始化词法分析器!");}publicvoidsetFilesPath(StringreserveFileName,StringClassFileName,StringsourceFileName,StringoutputFileName){//创建文件对象SourceFile=newja

6、va.io.File(sourceFileName);//创建文件对象ReserveFile=newjava.io.File(reserveFileName);//创建文件对象ClassFile=newjava.io.File(ClassFileName);//创建文件对象OutputFile=newjava.io.File(outputFileName);//如果文件已经存在,先删除,然后建立新文件if(OutputFile.exists()){OutputFile.delete();}try{OutputFile.createNewFile();}catch(Exc

7、eptione){e.printStackTrace(System.err);}try{//创建文件随机读取对象java.io.RandomAccessFileROutputFile=newjava.io.RandomAccessFile(this.OutputFile,"rw");//提示信息ROutputFile.write("///////////////////////////////////////".getBytes());ROutputFile.write(("//JAccidenceAnalyserversion"+g

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

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

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