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

编译原理词法分析,语法分析,语义分析(C语言)

编译原理词法分析,语法分析,语义分析(C语言)_第1页
1/33
编译原理词法分析,语法分析,语义分析(C语言)_第2页
2/33
编译原理词法分析,语法分析,语义分析(C语言)_第3页
3/33
词法分析 #include #include #include using namespace std; #define MAXN 20000 int syn,p,sum,kk,m,n,row; double dsum,pos; char index[800],len;//记录指数形式的浮点数 char r[6][10]={"function","if","then","while","do","endfunc"} ; char token[MAXN],s[MAXN]; char ch; bool is_letter(char c) { return c>='a' && c<='z' || c>='A' && c<='Z'; } bool is_digtial(char c) { return c>='0' && c<='9'; } bool is_dot(char c) { return c==',' || c==';'; } void identifier()//标示符的判断 { m=0; while(ch>='a' && ch<='z' || ch>='0' && ch<='9') { token[m++]=ch; ch=s[++p]; } token[m]='\0'; ch=s[--p]; syn=10; for(n=0;n<6;n++) if(strcmp(token,r[n])==0) { syn=n+1; break; } } void digit(bool positive)//数字的判断 { len=sum=0; ch=s[p]; while(ch>='0' && ch<='9') { sum=sum*10+ch-'0'; ch=s[++p]; } if(ch=='.') { dsum=sum; ch=s[++p]; pos=0.1; while(ch>='0' && ch<='9') { dsum=dsum+(ch-'0')*pos; pos=pos*0.1; ch=s[++p]; } if(ch=='e') { index[len++]=ch; ch=s[++p]; if(ch=='-' || ch=='+') { index[len++]=ch; ch=s[++p]; } if(!(ch>='0' && ch<='9')) { syn=-1; } else { while(ch>='0' && ch<='9') { index[len++]=ch; ch=s[++p]; } } } if(syn==-1 || (ch>='a' && ch<='z') || ch=='.') { syn=-1;//对数字开头的标识符进行判错。 while(ch>='0' && ch<='9' || ch>='a' && ch<='z' || ch=='.') ch=s[++p];// 找到下一次要判断的开头 ch=s[--p]; } else { ch=s[--p]; syn=12; if(!positive) dsum*=-1.0; } } else { if(ch>='a' && ch<='z') { syn=-1;//对数字开头的标识符进行判错。 while(ch>='0' && ch<='9' || ch>='a' && ch<='z') ch=s[++p];//找到下一次要判断的开头 ch=s[--p]; } else { ch=s[--p]; syn=11; if(!positive) sum*=-1; } } } bool check_behind_digit() { int i=p+1; while(s[i]!='\0') { if(s[i]>='0' && s[i]<='9') return true; else if(s[i]!=' ' && s[i]!='\t' && s[i]!='\n') return false; i++; } return false; } boo...

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

碎片内容

编译原理词法分析,语法分析,语义分析(C语言)

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