博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
0916作业二词法分析
阅读量:6229 次
发布时间:2019-06-21

本文共 3935 字,大约阅读时间需要 13 分钟。

1 #include
2 #include
3 #include
4 char prog[800],token[8]; 5 char ch; 6 int syn,p,q,sum; 7 char *rwtab[6]={
"begin","if","then","while","do","end"}; 8 void scaner(); 9 main() 10 { 11 p=0; 12 printf("\nplease input the source code:\n"); 13 do{ 14 ch=getchar(); 15 prog[p]=ch; 16 p++; 17 }while(ch!='#'); 18 p=0; 19 do 20 { 21 scaner(); 22 switch(syn) 23 { 24 case 11:printf("\n(%d,%d)",syn,sum);break; 25 case -1:printf("\n(%s,出错)",token);break; 26 default:printf("\n(%d,%s)",syn,token); 27 } 28 }while(syn!=0); 29 } 30 31 32 void scaner() 33 { 34 35 int i; 36 sum=0; 37 for(q=0;q<8;q++) 38 token[q]=NULL; 39 ch=prog[p]; 40 q=0; 41 while(ch==' '||ch=='\n') 42 { 43 p++; 44 ch=prog[p]; 45 } 46 if(('a'<=ch)&&(ch<='z')||('A'<=ch)&&(ch<='Z')) 47 { 48 while(('a'<=ch)&&(ch<='z')||('A'<=ch)&&(ch<='Z')||(ch>='0'&&ch<='9')) 49 { 50 token[q]=ch; 51 p++; 52 ch=prog[p]; 53 54 q++; 55 } 56 syn=10; 57 for(i=0;i<6;i++) 58 { 59 if(strcmp(token,rwtab[i])==0) 60 { 61 syn=i+1; 62 break; 63 } 64 } 65 } 66 else if(ch>='0'&&ch<='9') 67 { 68 while((ch>='0')&&(ch<='9')) 69 { 70 sum=sum*10+ch-'0'; 71 p++; 72 ch=prog[p]; 73 } 74 syn=11; 75 } 76 else switch(ch) 77 { 78 case '+': 79 syn=13; 80 token[q++]=ch; 81 p++; 82 break; 83 case '-': 84 syn=14; 85 token[q++]=ch; 86 p++; 87 break; 88 case '*': 89 syn=15; 90 token[q++]=ch; 91 p++; 92 break; 93 case '/': 94 syn=16; 95 token[q++]=ch; 96 p++; 97 break; 98 case ':': 99 syn=17;100 token[q++]=ch;101 p++;102 if(prog[p]=='=')103 {104 syn=18;105 ch=prog[p];106 token[q++]=ch;107 p++;108 }109 break;110 case '<':111 syn=20;112 token[q++]=ch;113 p++;114 if(prog[p]=='>')115 {116 syn=21;117 ch=prog[p];118 token[q++]=ch;119 p++;120 }121 if(prog[p]=='=')122 {123 syn=22;124 ch=prog[p];125 token[q++]=ch;126 p++;127 }128 break;129 case '>':130 syn=23;131 token[q++]=ch;132 p++;133 if(prog[p]=='=')134 {135 syn=24;136 ch=prog[p];137 token[q++]=ch;138 p++;139 }140 break;141 case '=':142 syn=25;143 token[q++]=ch;144 p++;145 break;146 case ';':147 syn=26;148 token[q++]=ch;149 p++;150 break;151 case '(':152 syn=27;153 token[q++]=ch;154 p++;155 break;156 case ')':157 syn=28;158 token[q++]=ch;159 p++;160 break;161 case '#':162 syn=0;163 token[q++]=ch;164 break;165 }166 }

转载于:https://www.cnblogs.com/zzy999/p/4826964.html

你可能感兴趣的文章
趋势科技CEO陈怡桦:敌人是谁?
查看>>
zabbix漏洞利用 Zabbix Server远程代码执行漏洞CVE-2017-2824 2.4.X均受影响
查看>>
带项目体会 合格的Leader 应该具备什么特质?
查看>>
Black Hat|黑客演示如何向卫星网络发送篡改信号
查看>>
揭秘中国数据库研究鲜为人知的那些事
查看>>
新年伊始你需要做的10个管理任务
查看>>
【安全课堂】七种武器把黑客拒之门外
查看>>
LaCie Mirror:科技与设计的交融
查看>>
很有意思,如何把代码看成一个犯罪现场
查看>>
10G光纤来了,收发器和线缆的变化有哪些?
查看>>
Java 9的JDK中值得期待的:不仅是模块化
查看>>
协鑫光伏:提升良品率的一小步是“中国智造”的一大步
查看>>
IoT大潮来袭 车联网行业准备好了吗?
查看>>
时空穿梭 探寻高端存储架构的前世今生
查看>>
中国企业应用数据分析大概情况和未来趋势
查看>>
阿里巴巴集团宣布60亿战略增资阿里云
查看>>
云计算Cloud Computing简介
查看>>
俄罗斯间谍黑客组织图拉劫持通信卫星链路盗取数据
查看>>
PM经验谈 项目管理工具必备的5个功能
查看>>
解读数据传输DTS技术架构及最佳实践
查看>>