中南大学软件学院编译原理实验报告

中南大学软件学院编译原理实验报告

ID:38777540

大小:215.75 KB

页数:21页

时间:2019-06-19

中南大学软件学院编译原理实验报告_第1页
中南大学软件学院编译原理实验报告_第2页
中南大学软件学院编译原理实验报告_第3页
中南大学软件学院编译原理实验报告_第4页
中南大学软件学院编译原理实验报告_第5页
资源描述:

《中南大学软件学院编译原理实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、《320144X1(编译原理)》实验报告项目名称编译原理专业班级软件工程1403学号姓名温睿诚实验成绩:批阅教师:年月日第一部分词法分析(实验一必作)实验一词法分析程序设计与实现实验报告要求详细说明你的程序的设计思路和实现过程。用有限自动机或者文法的形式对词法定义做出详细说明,说明词法分析程序的工作过程,说明错误处理的实现。设计思路:首先把单词进行分类,分为String[]keyword={"if","int"};ArrayListbiaoshi=newArrayList<>();ArrayListchangshu=newArrayList<>();S

2、tring[]yunsuan={"+","=","-",">","==","!="};String[]spilt={",","(",")","{","}",";"};五类,分别是关键字、标识符、常数、运算符以及分隔符。然后逐个字符读入,对于关键字或标识符这类英文单词开始的单词,用空格隔开,其他可以用分隔符、运算符、空格、回车等。读入一个单词后对照一开始的五类分析出是哪一类,符合后交给语法分析器处理。实现过程:importjava.io.*;importjava.util.ArrayList;/***Createdby温睿诚on2016/5/11/0011.*/publicclassCi

3、Fa{String[]keyword={"if","int"};ArrayListbiaoshi=newArrayList<>();ArrayListchangshu=newArrayList<>();String[]yunsuan={"+","=","-",">","==","!="};String[]spilt={",","(",")","{","}",";"};//记录结果的符号表//用什么数据结构呢?//当前单词StringBuilderstr=newStringBuilder("");//下一个要读的字符charnow;//一个栈ArrayL

4、iststack=newArrayList<>();privatevoidput(){stack.add(newCharacter(now));}privatecharpop(){if(stack.size()>0){return((Character)stack.remove(stack.size()-1)).charValue();}else{return0;}}//错误信息StringerrorMsg;Readerreader=null;publicstaticvoidmain(String[]args){CiFacifa=newCiFa();cifa.fe

5、nXi(args[0]);}privatevoidfenXi(Stringfilename){//读取文件Filefile=newFile(filename);try{reader=newInputStreamReader(newFileInputStream(file));}catch(FileNotFoundExceptione){System.out.println("读取文件字符失败!");e.printStackTrace();}//不断读取字符直到结束getChar();intresult;//使用预测分析法YuFayuFa=newYuCeFenXi();booleanfl

6、ag=true;while(!(now<0

7、

8、now>=65535)){//根据返回数值查找或插入,错误则打印并提示。正确则记录到mapresult=read();if(result!=6){System.out.println("("+result+",""+str+"")");if(!yuFa.fenxi(result,str.toString())){flag=false;System.err.println("语法分析出错!出错单词:"+str.toString());}}else{System.err.println("("+errorMsg+",""+str+"")

9、");}str.delete(0,str.length());}//结束booleantempResult=false;if(yuFa!=null)tempResult=yuFa.fenxi(6,"#");if(tempResult&&flag)System.out.println("语法分析通过!");}//判断是否为数字privatebooleanisDigit(){if('0'<=now&&now<='9')returntrue;else

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

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

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