电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

合肥工业大学编译原理实验VIP免费

合肥工业大学编译原理实验_第1页
1/29
合肥工业大学编译原理实验_第2页
2/29
合肥工业大学编译原理实验_第3页
3/29
宣城校区实验报告课程名称编译原理专业班级计算机0001班学生姓名及学号赵保飞2015216768指导教师李芒宏实验地点计算机中心楼第四机房2017~2018学年第一学期《编译原理》课程实验报告实验词法分析设计姓名赵保飞系院专业计算机科学与技术班级计算机01班学号2015216768实验2017.10.18指导教师李芒宏成绩一、实验目的和要求通过本实验的编程实践,使学生了解词法分析的任务,掌握词法分析程序设计的原理和构造方法,使学生对编译的基本概念、原理和方法有完整的和清楚的理解,并能正确地、熟练地运用。二、实验原理(1)实验数据结构说明K[]String数组-关键字表;s[]char数组—分界符;m[]char数组—算术运算符;r[]String数组—关系运算符;ArrayList型String数组ci—常数;ArrayList型String数组id—标识符(2)实验算法描述(3)算法流程图三、源程序代码和测试结果packagelexicalAnalysis;importjava.util.*;importjava.io.*;publicclasslexicalAnalysis{staticStringk[]={"for","main","if","while","void","public","static","printf","scanf","asm","do","return","typedef","auto","double","break","short","using","default","long"};//关键字staticchars[]={',',';','(',')','[',']','{','}'};//2分界符staticcharm[]={'+','-','*','/'};//3算术运算符staticStringr[]={"<","<=","=",">",">=","<>"};//4关系运算符ArrayListci=newArrayList();//5常数ArrayListid=newArrayList();//6标识符StringtempToken="";//临时存放组成一个“词”单位串intpint,row=1,line=1;//当前指针指示,行数,列数charch;//存放最新读入源程序字符Stringinstring;//存放输入de源程序代码publicstaticvoidmain(String[]args)throwsException{//TODOAuto-generatedmethodstublexicalAnalysisone=newlexicalAnalysis();System.out.println("单词"+"\t二元序列"+"\t类型"+"\t位置(行,列)");one.readtext();}booleanisdigit(charc){//判断所读字符是否为数字,是则返回ture,否则返回falseif(c>=48&&c<=57)returntrue;elsereturnfalse;}booleanisletter(charc){//判断所读字符是否为字母,是则返回true,否则返回falseif((c>64&&c<91)||(c>96&&c<123))returntrue;elsereturnfalse;}booleanisline(charc){//判断字符c是否是下划线"_"if(c=='_')returntrue;elsereturnfalse;}booleanremove(){//用于在判断关系运算符时,判断是否是要再读一个字符charb=instring.charAt(pint+1);//string类charAt()方法用于返回指定索引处的字符。索引范围为从0到length()-1if(b=='='||b=='>')//当其后的字符是=或>时,要再读一个字符。否则不要再读。returntrue;elsereturnfalse;}voidclearBlank(){//检查空白直到读入字符非空白while(ch==''){getchar();}}voidgetchar(){pint++;if(pint<=instring.length()-1){ch=instring.charAt(pint);if(ch=='\n'){change_row_line();getchar();}}elsech='';//instring数据读取完,需重新读入}voidretract(){//读入前一个字符pint--;ch=instring.charAt(pint);}voiddistinguishLeter(){//识别字符串tempToken="";//清空while(isletter(ch)||isdigit(ch)||isline(ch)){//字母,数字,下划线仍是字符串合法组成,继续识别tempToken=tempToken+ch;getchar();}}voiddistinguishDigit(){//识别数字串tempToken="";//先将strtoken置空while(isdigit(ch)){//当数字时继续识别数字串tempToken=tempToken+ch;//将新识别的字符加到strtoken后getchar();}if(isletter(ch)||isline(ch)){//识别完数字串而其后是字母,下划线时出错处理while(isletter(ch)||isline(ch)||isdigit(ch)){//当是字母,数字,下划线时继续识别错误数字串tempToken=tempToken+ch;//将新识别的字符加到strtoken后getchar();}display(0,tempToken,'');//输出错误数字串tempToken="";//将strtoken置空返回}}voiddisplay(inti,Strings,chara){//各种输出处理switch(i){case-1:System.out.println(a+"\tError"+"\tError"+"\t"+row+","+line+")");break;case0:System.out.println(s+"\tError...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

合肥工业大学编译原理实验

您可能关注的文档

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部