首页 词法语法语义分析器代码

词法语法语义分析器代码

举报
开通vip

词法语法语义分析器代码#include #include using namespace std; void scaner(); //扫Α?描â void checkIDF(); //检ì查ã是?否?是?保馈?留?字? void checkNum(); //检ì查ã是?否?是?数簓字? void retract(); //回?退? char getChar(); //获?取?下?一?个?字?符? void concatenation(); //连?接ó字?符? int reserve(); //检ì查ã是?否?是?保馈?留...

词法语法语义分析器代码
#include #include using namespace std; void scaner(); //扫Α?描â void checkIDF(); //检ì查ã是?否?是?保馈?留?字? void checkNum(); //检ì查ã是?否?是?数簓字? void retract(); //回?退? char getChar(); //获?取?下?一?个?字?符? void concatenation(); //连?接ó字?符? int reserve(); //检ì查ã是?否?是?保馈?留?字? void buildlist1(); //建?立??标括?识?符?表括? void buildlist2(); //建?立??数簓字?表括? void error(); //报馈?错洙? bool letter(); //字?母? bool digit(); //数簓字? char character[80],token[8],ch,tk[4]; //character数簓组哩?保馈?存?输?入?的?所õ有瓺字? 符? token当獭?前?要癮检ì查ã的?字?符? int sy,syn,pt,pc,pL1=0,pL2=0,p5,p6; //syn 种?别纄编括?码? pt token数簓组哩?下?标括? pc character数簓组哩?下?标括? pL1 标括?志?符?表括?下?标括? pL2 数簓字?表括?下?标括? vector list1; //标括?志?符?表括? vector list2; //数簓字?表括? void scaner() { pt=0; for(int i=0;i<8;i++) { token[i]=NULL; } char s=getChar(); while((s==' ')||(s=='\n')) { s=getChar(); } if(((s<='z')&&(s>='a'))||((s<='Z')&&(s>='A'))) { checkIDF(); } else if((s>='0')&&(s<='9')) { syn=7; checkNum(); } else switch(s) { case'=': s=getChar(); if(s=='=') { sy=1; syn=14; strcpy(token,"relop"); strcpy(tk,"EQ"); } else { syn=8; retract(); token[pt]='='; } break; case'+': token[pt]='+'; syn=9; break; case'*': s=getChar(); if(s=='*') { syn=11; strcpy(token,"**"); } else { retract(); token[pt]='*'; syn=10; } break; case'-': token[pt]='-'; syn=12; break; case'/': token[pt]='/'; syn=13; break; case'>': syn=14; s=getChar(); if(s=='=') { sy=3; strcpy(token,"relop"); strcpy(tk,"ME"); } else { sy=2; retract(); strcpy(token,"relop"); strcpy(tk,"MT"); } break; case'<': syn=14; s=getChar(); if(s=='=') { sy=5; strcpy(token,"relop"); strcpy(tk,"LE"); } else { sy=4; retract(); strcpy(token,"relop"); strcpy(tk,"LT"); } break; case'!': s=getChar(); if(s=='=') { syn=14; strcpy(token,"relop"); strcpy(tk,"UEQ"); } else { retract(); cout<<"第台?<= '0' && token[i] <= '9'; ++i) { n = 10 * n + (token[i] - '0'); } list2.push_back(n); pL2++; } void error() { cout<<"出?现?错洙?误ó----------------"<='a'))||((s<='Z')&&(s>='A'))) { return true; } else return false; } bool digit() { char s=character[pc-1]; if((s>='0')&&(s<='9')) return true; else return false; } #include using namespace std; int lookahead; //当獭?前?种?别纄编括?码? int a1,v,p7,p8; //a1 pa数簓组哩?下?标括? v=0表括?示? (辍? v=1 表括?示? )? int pa[100][2]; //第台?一?维?保馈?存?单蹋?词洙?的?种?别纄编括?码? 第台?二t维?用?来ぁ?区? 分?种?别纄编括?码?相à同?的?单蹋?词洙? int nexttoken(); //下?一?个?单蹋?词洙?的?种?别纄编括?码? void match(); void S(); void A(); void Op(); void B(); void relop(); void E(); void E1(); void T(); void T1(); void F(); void p(); void error1(); int nexttoken() { v=pa[++a1][1]; int paa=pa[a1][0]; p8++; if(paa==15) { p7++; p8=0; } return pa[a1][0]; } void match(int t) { if(lookahead==t) { lookahead=nexttoken(); } else { error1(); } } void S() { if(lookahead==1) { cout<<"S-> while(A) S"< i=E;"<if (A) S else S"<B Op B | B"<&&"<||"<E relop E"< =="< >"< >="< <"< <="<T E1"<+T E1"<F T1"<*F T1"< P**F|P"<i"<(E)"< #include "cf.h" #include "yf.h" using namespace std; int a,b,c,d,vv,nxq; //a pa数簓组哩?词洙?法ぁ?分?析?时骸?的?下?标括? b 保馈?存?pa当獭?前?下?标括?值μ c pa数簓组哩?语?义?分?析?时骸?的?下?标括? d 中D间?变?量?的?下?标括? vv=0 表括?示? (辍? vv=1 表括?示? )? int lookahead1; //pa数簓组哩?当獭?前?下?标括? nxq 下?一?条?将?要癮产ö生Θ?的?四?元a式?的?地?址? int e[20][4]; //4元a式? 数簓组哩? int s; //4元a式?数簓组哩?下?标括? void S1(); int A1(); void Op1(); int B1(); int relop1(); int E2(); int T2(); int F1(); int P1(); void error2(); void scaner1(); int emit(int a,int b,int c,int d); //保馈?存?当獭?前?4元a式? int newtemp(); void backpatch(int p,int t); void show(); int merge(int p1,int p2); void main() { cout<<"*************************词洙?法ぁ?分?析?器ô****************************"< ,14) ( >= ,14)"<=1&&syn<=5)||(syn>=8&&syn<=13)||(syn>=15&&syn<=16)||syn==18||syn==19) { cout<<"("< ,"; break; case 3: cout<= ,"; break; case 4: cout<=200) cout<
本文档为【词法语法语义分析器代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_003124
暂无简介~
格式:doc
大小:75KB
软件:Word
页数:43
分类:企业经营
上传时间:2017-09-06
浏览量:64