首页 词法分析器C语言

词法分析器C语言

举报
开通vip

词法分析器C语言词法分析器C语言 实实一 实法分析器实实 【实实目的】 1,熟悉实法分析的基本原理~实法分析的实程以及实法分析中要注意的实实。 2,实实高实实言~实一步加强用高实实言解实实实实的能力。来决 3,通实完成实法分析程序~了解实法分析的实程。 【实实容】内 用C实言实一写个PL/0实法分析器~实实法实实分析提供实实~使之能把实入的字符串形式的源程序分割成一实实符实实实实法实实分析~把分析实果;个个号并基本字~算符~实实符~常以及界运数 符,实出。 【实实步实和要求】 1.实法分析实程的流程实 。 2.每模实的源代实个...

词法分析器C语言
词法分析器C语言 实实一 实法分析器实实 【实实目的】 1,熟悉实法分析的基本原理~实法分析的实程以及实法分析中要注意的实实。 2,实实高实实言~实一步加强用高实实言解实实实实的能力。来决 3,通实完成实法分析程序~了解实法分析的实程。 【实实容】内 用C实言实一写个PL/0实法分析器~实实法实实分析提供实实~使之能把实入的字符串形式的源程序分割成一实实符实实实实法实实分析~把分析实果;个个号并基本字~算符~实实符~常以及界运数 符,实出。 【实实步实和要求】 1.实法分析实程的 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 实 。 2.每模实的源代实个 //实实实字等实实初始化 void init() {int i; for(i=0;i<=255;i++){ssym[i]=nul;} ssym['+']=plus;ssym['-']=minus;ssym['*']=times;ssym['/']=slash; ssym['(']=lparen;ssym[')']=rparen;ssym['=']=eql; ssym[',']=comma; ssym['.']=period;ssym['#']=neq;ssym[';']=semicolon; strcpy(&(word[0][0]),"begin");strcpy(&(word[1][0]),"call"); strcpy(&(word[2][0]),"const");strcpy(&(word[3][0]),"do"); strcpy(&(word[4][0]),"end");strcpy(&(word[5][0]),"if"); strcpy(&(word[6][0]),"odd");strcpy(&(word[7][0]),"procedure"); strcpy(&(word[8][0]),"read");strcpy(&(word[9][0]),"program"); strcpy(&(word[10][0]),"var");strcpy(&(word[11][0]),"while"); strcpy(&(word[12][0]),"write");strcpy(&(word[13][0]),"then"); wsym[0]=beginsym;wsym[1]=callsym;wsym[2]=constsym;wsym[3]=dosym;wsym[4]=endsym;wsym[5]=ifsym;wsym[6]=oddsym;wsym[7]=procsym;wsym[8]=readsym;wsym[9]=programsym;wsym[10]=varsym;wsym[11]=whilesym;wsym[12]=writesym;wsym[13]=thensym; } //实取源文件判实实实实并断 void getsym() {long m; char id[al+1],a[al+1]; int i,k,n=0; init(); if(ch==' '||ch==10||ch==9){ch=fgetc(fin);} //去除空格、制 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 符、实行符 else{ if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z'){ //判是否保留字断 k=0; do{ if(k='a'&&ch<='z'||ch>='0'&&ch<='9'||ch>='A'&&ch<='Z'); a[k]=0; strcpy(id,a); for(i=0;i='0'&&ch<='9') //判是否字断数 {k=0; m=0; sym=number; do{ m=10*m+ch-'0'; k++; ch=getc(fin); }while(ch>='0'&&ch<='9');if(k>=nmax){ printf("\t ERROR!数实太大!\n");}printf("%d\t\t\tnumber(常数)\n",m); fprintf(fout,"%d\t\t\tnumber(常数)\n",m); } else{ //判是否算符、界符断运 if(ch==':'){ ch=getc(fin); if(ch=='=') { sym=becomes; printf(":=\t\t\tbecomes(运算符,实实)\n"); fprintf(fout,":=\t\t\tbecomes(运算符,实实)\n"); ch=fgetc(fin); } else{ sym=nul; printf(":\t\t\tnul(非法符,冒号)\n"); fprintf(fout,":\t\t\tnul(非法符,冒号)\n");}} else{ if(ch=='<'){ ch=fgetc(fin); if(ch=='='){ sym=leq; printf("<=\t\t\tlep(运算符,小于等于)\n"); fprintf(fout,"<=\t\t\tlep(运算符,小于 等于)\n"); ch=fgetc(fin);} else{ sym=lss; printf("<\t\t\tlss(运算符,小于)\n"); fprintf(fout,"<\t\t\tlss(运算符,小 于)\n");} } else{ if(ch=='>'){ ch=fgetc(fin); if(ch=='='){ sym=geq; printf(">=\t\t\tgeq(运算符,大于等于) \n"); fprintf(fout,">=\t\t\tgeq(运算 符,大于等于)\n"); ch=fgetc(fin);} else{ sym=gtr; printf(">\t\t\tgtr(运算符,大于)\n"); fprintf(fout,">\t\t\tgtr(运算符,大 于)\n");} } else{ sym=ssym[ch]; if(ch=='+'){printf("+\t\t\tplus(运算符,加号)\n"); fprintf(fout,"+\t\t\tplus(运号算符,加)\n");ch=fgetc(fin);} else if(ch=='-'){printf("-\t\t\tminus(运算符,减号)\n"); fprintf(fout,"-\t\t\tminus(运减算符,号)\n");ch=fgetc(fin);} else if(ch=='*'){printf("*\t\t\ttimes(运算符,乘号)\n"); fprintf(fout,"*\t\t\ttimes(运算符,乘号)\n");ch=fgetc(fin);} else if(ch=='/'){printf("/\t\t\tslash(运算符,除号)\n"); fprintf(fout,"/\t\t\tslash(运号算符,除)\n");ch=fgetc(fin);} else if(ch=='('){printf("(\t\t\tlparen(界符,左括号)\n"); fprintf(fout,"(\t\t\tlparen(界符,左括号)\n");ch=fgetc(fin);} else if(ch==')'){printf(")\t\t\trparen(界符,右括号)\n"); fprintf(fout,")\t\t\trparen(界符,右括号)\n");ch=fgetc(fin);} else if(ch=='='){printf("=\t\t\teql(运算符,等号)\n"); fprintf(fout,"=\t\t\teql(运算符,等号)\n");ch=fgetc(fin);} else if(ch==','){printf(",\t\t\tcomma(运算符,不等号)\n"); fprintf(fout,",\t\t\tcomma(界符,逗号)\n");ch=fgetc(fin);} else if(ch=='#'){printf("#\t\t\tneq(运算符,不等号)\n"); fprintf(fout,"#\t\t\tneq(运算符,不等号)\n");ch=fgetc(fin);} else if(ch=='.'){printf(".\t\t\tperiod(界符,句号)\n"); fprintf(fout,".\t\t\tperiod(界符,句号)\n");ch=fgetc(fin);} else if(ch==';'){printf(";\t\t\tsemicoln(界符,分号)\n"); fprintf(fout,";\t\t\tsemicoln(界符,分号)\n");ch=fgetc(fin);} else{printf("%c\t\t\tnul(界符,空格)\n",ch); fprintf(fout,"%c\t\t\tnul(界符,空格)\n",ch);ch=fgetc(fin);} }}}}}}} 3.实果截实
本文档为【词法分析器C语言】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_212655
暂无简介~
格式:doc
大小:55KB
软件:Word
页数:8
分类:互联网
上传时间:2017-09-28
浏览量:191