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

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

#include 
#include
#include
#include
char prog[80]={'\0'},token[8]; char ch;int syn,n,sum,m,p; char *rwtab[6]={"begin","if","then","while","do","end"};void scaner(){ m=0; sum=0; for(n=0;n<8;n++) token[n]='\0'; ch=prog[p++]; while(ch==' ') ch=prog[p++]; if(isalpha(ch)) { while(isalpha(ch)||isdigit(ch)) { token[m++]=ch; ch=prog[p++]; } token[m++]='\0'; ch=prog[p--]; syn=10; for(n=0;n<6;n++) if(strcmp(token,rwtab[n])==0) { syn=n+1; break; } } else if(isdigit(ch)) { while(isdigit(ch)) { sum=sum*10+ch-'0'; ch=prog[p++]; } ch=prog[p--]; syn=11; } else switch(ch) { case'<':m=0;token[m++]=ch;ch=prog[p++]; if(ch=='>') { syn=21; token[m++]=ch; } else if(ch=='=') { syn=22; token[m++]=ch; } else { syn=20; ch=prog[p--]; } break; case'>':m=0;token[m++]=ch;ch=prog[p++]; if(ch=='=') { syn=24; token[m++]=ch; } else { syn=23; ch=prog[p--]; } break; case':':m=0;token[m++]=ch;ch=prog[p++]; if(ch=='=') { syn=18; token[m++]=ch; } else { syn=17; ch=prog[p--]; } break; case'+':syn=13;token[0]=ch;break; case'-':syn=14;token[0]=ch;break; case'*':syn=15;token[0]=ch;break; case'/':syn=16;token[0]=ch;break; case'=':syn=25;token[0]=ch;break; case';':syn=26;token[0]=ch;break; case'(':syn=27;token[0]=ch;break; case')':syn=28;token[0]=ch;break; case'#':syn=0;token[0]=ch;break; default:syn=-1;}}main(){ p=0; printf("\n请输入需要分析的字符串,以#表示结束:"); do { ch=getchar(); prog[p++]=ch; }while(ch!='#'); p=0; do { scaner(); switch(syn) { case 11: printf("(%d,%d)\n",syn,sum);break; case -1: printf("\n 出错;\n");break; default: printf("(%d,%s)\n",syn,token); } }while(syn!=0); getch();}

转载于:https://www.cnblogs.com/TopHin/p/5925086.html

你可能感兴趣的文章
Linux 性能诊断 perf使用指南
查看>>
实操分享:看看小白我如何第一次搭建阿里云windows服务器(Tomcat+Mysql)
查看>>
Sphinx 配置文件说明
查看>>
数据结构实践——顺序表应用
查看>>
python2.7 之centos7 安装 pip, Scrapy
查看>>
机智云开源框架初始化顺序
查看>>
Spark修炼之道(进阶篇)——Spark入门到精通:第五节 Spark编程模型(二)
查看>>
一线架构师实践指南:云时代下双活零切换的七大关键点
查看>>
ART世界探险(19) - 优化编译器的编译流程
查看>>
玩转Edas应用部署
查看>>
music-音符与常用记号
查看>>
sql操作命令
查看>>
zip 数据压缩
查看>>
Python爬虫学习系列教程
查看>>
【数据库优化专题】MySQL视图优化(二)
查看>>
【转载】每个程序员都应该学习使用Python或Ruby
查看>>
PHP高级编程之守护进程,实现优雅重启
查看>>
PHP字符编码转换类3
查看>>
rsync同步服务配置手记
查看>>
http缓存知识
查看>>