博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
词法分析修改版
阅读量:5097 次
发布时间:2019-06-13

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

#include
#include
void Fenxi(char c,char b);void word(char a[]);void number(char a[]);int i; //定义全局变量iint s=1; //用来记录是否存在非法字符main(){ char a[50]; printf("请输入源程序:"); gets(a); printf("您要分析的源程序为:"); printf("%s",a); printf("\n"); for(i=0;(a[i]!='\0')&&(i<50)&&s==1;i++) { if((a[i]>='a' && a[i]<='z')||(a[i]>='A' && a[i]<='Z')) word(a); else if(a[i]>='0' && a[i]<='9') number(a); else Fenxi(a[i],a[i+1]); } printf("\n");}void number(char a[]) //对数字字符进行扫描分析{ char b[50]; int m,k=0,t; m=i; while(a[m]>='0' && a[m]<='9') { b[k]=a[m]; //用数组b存放数组a中的数字 k++; m++; } i=m-1; printf("(11,"); for(t=0;t
='a'&&a[m]<='z')||(a[m]>='A'&&a[m]<='Z')) //用数组b存放数组a中的字母 { b[k]=a[m]; k++; m++; b[k]='\0'; } i=m-1; for(t=0;t<6;t++) { if(strcmp(b,key[t])==0) //将数组b与关键字进行比较 { printf("(%d,%s)",t+1,key[t]); //输出关键字 flag=1; printf("\n"); } } if(flag==0) { printf("(10,%s)",b); //输出标识符 printf("\n"); }}void Fenxi(char c,char b) //对特殊字符进行扫描分析{ switch(c){ case ' ': break; case '+': printf("(13,+)\n"); break; case '-': printf("(14,-)\n"); break; case '*': printf("(15,*)\n"); break; case '/': printf("(16,/)\n"); break; case ':': if(b=='=') { i++; printf("(18,:=)\n"); } else printf("(17,:)\n"); break; case '<': if(b=='>') { i++; printf("(21,<>)\n"); } else if(b=='=') { i++; printf("(22,<=)\n"); } else printf("(20,<)\n"); break; case '>': if(b=='=') { printf("(24,>=)\n"); i++; } 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; default: { printf("\n存在字符 '%c',无法继续识别!\n",c); s=0; //用s=0记录存在非法字符 break; } }}

 

转载于:https://www.cnblogs.com/Ranjer/p/4877905.html

你可能感兴趣的文章
constraint the design
查看>>
jquery 实现页面局部刷新ajax做法
查看>>
潜移默化
查看>>
我自己遇到的一个随机无重复分配问题实例
查看>>
mysql 联合索引和唯一索引
查看>>
机器学习常用Python扩展包
查看>>
Python 高级图像处理
查看>>
小程序开发笔记
查看>>
操作系统实验一:处理器管理
查看>>
perl EXPORT模块
查看>>
登陆注册模块
查看>>
Selenium环境搭建
查看>>
PC和移动端浏览器同步测试工具Browsersync使用介绍
查看>>
Ubuntu里面的安装命令总结
查看>>
作品分享 《卡通人物》
查看>>
javascript_tutorial 【转】
查看>>
步骤4:mybatis对sql进行对象化
查看>>
51nod蜥蜴与地下室(1498)(暴力搜索)
查看>>
Apache开启伪静态
查看>>
DS 工作室
查看>>