0916 编程实验一 词法分析程序
2015-10-22 16:18
267 查看
# include<stdio.h> # include<stdlib.h> # include<string.h> int panduan(char tmp[]) { char b[6][10] = {"begin", "if", "then", "while", "do", "end", }; int k = 0; while(k < 6) // 临时变量tmp 与 字符串b[k] 进行比较 { if(strcmp(tmp, b[k]) == 0) { printf("<%s, %d>\n", tmp, k+1); return 0; } k++; } printf("<%s, 10>\n", tmp); return 0; } void cifafenxi(char a[]) { int i = 0, j = 0; char tmp[10]; int flag = 0; while(a[i] != '\0') { if(a[i] >= 'a' && a[i] <= 'z') // 判断标识符 { tmp[j] = a[i]; j++; while((a[i+1] >= 'a' && a[i+1] <= 'z') || (a[i+1] >= '0' && a[i+1] <= '9')) { i++; tmp[j] = a[i]; j++; } tmp[j] = '\0'; j = panduan(tmp); } if(a[i] >= '0' && a[i] <= '9') // 判断数字 { tmp[j] = a[i]; j++; while(a[i+1] >= '0' && a[i+1] <= '9') { i++; tmp[j] = a[i]; j++; } tmp[j] = '\0'; printf("<%s, 11>\n", tmp); j = 0; } switch(a[i]) // 判断符号 { case '+':printf("<+, 13>\n");break; case '-':printf("<-, 14>\n");break; case '*':printf("<*, 15>\n");break; case '/':printf("</, 16>\n");break; case ':': { if(a[i+1] == '=') printf("<:=, 18>\n"); else printf("<:, 17>\n"); }break; case '<': { if(a[i+1] == '=') printf("<<=, 21>\n"); else if(a[i+1] == '>') printf("<<>, 22>\n"); else printf("<<, 20>\n"); }break; case '>': { if(a[i+1] == '=') printf("<>=, 24>\n"); 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("<#, 0>\n");break; } i++; } } int main(void) { char a[300]; printf("input : "); gets(a); cifafenxi(a); return 0; }
![](http://images2015.cnblogs.com/blog/809007/201510/809007-20151022161621942-2052433180.jpg)
相关文章推荐
- Yii2分页
- Python——列表,元组
- Java开发中一些内置对象的总结
- 通过抓取淘宝评论为例讲解Python爬取ajax动态生成的数据(经典)
- cuda -创建流的基本操作
- 经典书籍_java学习基础编程篇
- [php] thinkphp实现 163 qq 邮箱收发邮件(切实可用)
- 字符串的旋转,不废话,直接上代码。。。
- java多线程总结
- Java之——打开浏览器访问指定页面
- 通过smtp协议简单实现邮件发送
- java学习经典书籍_移动开发篇
- java学习经典书籍_杂篇
- java学习经典书籍_数据库篇
- JavaWeb扩展--Freemarker(二)
- 一个含n个元素的整数数组至少存在一个重复数, 请编程实现,在O(n)时间内找出其中任意一个重复数。
- struts2文件上传与下载
- Thinlphp 模版 foreach 嵌套在 另一个循环出现不能在次循环问题。
- 【VB.NET】视频总结
- java实现单向链表