0916编译原理第二次作业
2015-09-21 13:40
1376 查看
#include<stdio.h> #include<string.h> #define max 100 int n=0,i=0; char token[max]; char a; char word[max]; void fuhao(); void shuzi(); main() { char *rwtab[6]={"begin","if","then","while","do","end"}; int p=0,j=0,k=0,m=0; int key=0; printf("请输入源程序(以#键结束):"); do{ scanf("%c",&a); word[p]=a; p++; }while(a!='#'); //关键字的判断 while(word[i]!='#') { while((word[i]>='a'&&word[i]<='z')||(word[i]>='A'&&word[i]<='Z')) { if((word[i]>='a'&&word[i]<='z')||(word[i]>='A'&&word[i]<='Z')) { token =word[i]; n++; token ='\0'; i++; } for(k=0;k<6;k++) { key=0; if(strcmp(rwtab[k],token)==0) { printf("%s %d\n",rwtab[k],k+1); key=1; break; } } } if(key==0) { printf("%s 10\n",token); } key=1; i=i+1; n=0; } fuhao(); shuzi(); } //特殊符号的判断 void fuhao() { int p=0,sign=0; for(p=0;p<max;p++) { switch(word[p]) { case '+': printf("+ 13\n"); break; case '-': printf("- 14\n"); break; case '*': printf("* 15\n"); break; case '/': printf("/ 16\n"); break; case ':': if(word[p+1]=='=') { printf(":= 18\n"); p++; } else printf(": 17\n"); break; case '<': if(word[p+1]=='=') { printf("<= 21\n"); sign=1; p++; } else if(word[p+1]=='>') { printf("<> 22\n"); sign=1; p++; } else if(sign==0) printf("< 20\n"); break; case '>': if(word[p+1]=='=') { printf(">= 24\n"); p++; } else printf("> 23\n"); break; case '=': printf("= 25\n"); break; case ';': printf("; 26\n"); break; case '(': printf("( 27\n"); break; case ')': printf(") 28\n"); break; case '#': printf("# 29\n"); break; } } } //数字的判断 void shuzi() { int p=0,j=0,t=0,key=0; char Shu[100]; while(word[p]!='#') { key=0; while(word[p]>='0'&&word[p]<='9') { Shu[j]=word[p]; p++; j++; key=1; } if(key==1) { for(t=0;t<j;t++) { printf("%c",Shu[t]); } printf(" 11\n"); j=0; } p++; } }
相关文章推荐
- hdu 5464 Clarke and problem(dp)
- 在android中使用logback-android日志框架配置 slf4j + logback
- Docker体验 Ubuntu下安装
- 对安卓反编译点的一点收获
- 【笔记】HTML+CSS基础课程(慕课)-CSS部分
- UnityShader实例15:屏幕特效之Bloom
- redis实战之使用redis存储session数据
- DWR应用—快速入门篇
- 常用sql
- 为什么通信服务提供商需要实现SD-WAN
- 使用Struts2和jQuery EasyUI实现简单CRUD系统(三)——ajax,struts2使用json格式的交互
- 哈希函数的构造方法
- URAL 1119 Metro (DP动态规划)
- 磁盘I/O性能----RAID
- Xilinx 双口RAM Ipcore Teset(VHDL)
- docker使用基础总结
- 软件设计中的数据处理
- ApacheBench(ab)使用简介
- 413 Request Entity Too Large
- MSSQL - SQL Server2008附加数据库失败 错误号:5120