版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编译原理实验报告词法分析器实验目的熟练掌握词法分析程序的基本原理掌握词法分析程序的设计和实现实验内容针对一个简化的C语言子集完成对它的词法分析程序的设计与实现C语言子集的单词符号挤内码值程序代码:#include"stdio.h"#include"string.h"inti,j,k;chars;chara[20],token[20];intletter(){ if((s>=97)&&(s<=122)) return1; elsereturn0;}intdigit(){if((s>=48)&&(s<=57)) return1; elsereturn0;}voidget(){ s=a[i];i=i+1;}voidretract(){i=i-1;}intlookup(){ if(strcmp(token,"while")==0)return1; elseif(strcmp(token,"if")==0)return2; elseif(strcmp(token,"else")==0)return3; elseif(strcmp(token,"switch")==0)return4; elseif(strcmp(token,"case")==0)return5; elsereturn0;}voidmain(){printf("输入源程序,结束用'#':\n"); i=0; do{i++; scanf("%c",&a[i]); }while(a[i]!='#'); i=1; memset(token,0,sizeof(char)*20); j=0; get(); while(s!='#') {if(s=='') get(); else {switch(s){ case'a': case'b': case'c': case'd': case'e': case'f': case'g': case'h': case'i': case'j': case'k': case'l': case'm': case'n': case'o': case'p': case'q': case'r': case's': case't': case'u': case'v': case'w': case'x': case'y': case'z': while(letter(s)||digit(s)) {token[j]=s; j++; get(); } retract(); k=lookup(); if(k==0)printf("(%d,%s)\n",6,token); elseprintf("(%d,unll)\n",k); break; case'0': case'1': case'2': case'3': case'4': case'5': case'6': case'7': case'8': case'9': while(digit(s)){ token[j]=s; j=j+1; get(); } retract(); printf("(%d,%s)\n",7,token); break; case'+':printf("(+,null)\n"); break; case'-':printf("(-,null)\n"); break; case'*':printf("(*,null)\n"); break; case'<': get(); if(s=='=') printf("(relop,LE)\n"); else{ retract(); printf("(relop,LT)\n"); } break; case'=': get(); if(s=='=')printf("(relop,EQ)\n"); else{ retract(); printf("(=,null)\n"); } break; case';':printf("(;,null)\n"); break; default:printf("(%c,error)\n",s); break; } memset(token,0,sizeof(char)*10); j=0; get(); } }}运行结果:编译原理实验报告语法分析器实验目的熟练掌握语法分析程序的基本原理掌握用算符优先分析法来构造,设计优先函数掌握语法分析程序的设计与实现实验内容针对一个简单文法完成对它的语法分析程序的设计与实现通过语法分析程序来完成多输入的算数表达式进行计算并相应得到的对应四元式程序代码:#include<stdio.h>chara[20],optr[10],s,op;inti,j,k,opnd[10],x1,x2,x3;intoperand(chars){ if((s>='0')&&(s<='9')) return1; else return0;}intf(chars){ switch(s) { case'+':return6; case'-':return8; case'*':return10; case'/':return12; case'(':return2; case')':return12; case'#':return2; default:printf("error!\n"); }}intg(chars){ switch(s) { case'+':return5; case'-':return7; case'*':return9; case'/':return11; case'(':return13; case')':return2; case'#':return2; default:printf("error!\n"); }}voidget(){ i=i+1; s=a[i]; }voidmain(){ printf("请输入算数表达式,以'#'结束:\n");i=0;do{ i=i+1; scanf("%c",&a[i]);}while(a[i]!='#');i=0;j=0;k=0;optr[j]='#';get();while((optr[j]!='#')||(s!='#')){ if(operand(s)) { opnd[k]=s-'0'; k=k+1; get(); } elseif(f(optr[j])>g(s)) { op=optr[j]; j=j-1; x2=opnd[k-1]; x1=opnd[k-2]; k=k-2; switch(op){ case'+':x3=x1+x2;break; case'-':x3=x1-x2;break; case'*':x3=x1*x2;break; case'/':x3=x1/x2;break; } opnd[k]=x3; k=k+1; printf("(%c,%d,%d,%d)\n",o
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 黑龙江省鹤岗市绥滨一中学2025-2026学年初三第四次适应性训练英语试题含解析
- 山东省济宁市邹城2025-2026学年初三5月检测试题英语试题含解析
- 重庆巴川小班2026年初三第五次诊断考试语文试题试卷含解析
- (正式版)DB37∕T 1516-2010 《无公害食品 塑料大棚茄子生产技术规程》
- (正式版)DB37∕T 1585-2020 《乌鳢苗种培育技术规程》
- 挖掘机租用合同
- 投标委托合同
- 2026年舞台机械合同(1篇)
- 卵巢癌重点患者应急预案(3篇)
- Unit 2 Lets talk teens Period 2 Grammar and usage 教学设计(高中英语)
- 蔬菜采购市场询价制度
- 智能汽车驾乘体验测试评价规程-行车辅助
- 义务教育数学课程标准(2025年修订版 VS 2022年版)对比
- 学校投诉处理制度
- 2026四川泸州产城招引商业管理有限公司人员招聘4人笔试参考题库及答案解析
- 高电压技术电气设备绝缘试验
- 江苏省建筑工程造价估算指标
- GB/T 16622-2022压配式实心轮胎规格、尺寸与负荷
- GB/T 2878.2-2011液压传动连接带米制螺纹和O形圈密封的油口和螺柱端第2部分:重型螺柱端(S系列)
- GB/T 13173-2021表面活性剂洗涤剂试验方法
- 近三年投标没有发生过重大质量安全事故的书面声明范文
评论
0/150
提交评论