编译原理实验改进版(词法分析)
来源:互联网 发布:传奇游戏源码是什么 编辑:程序博客网 时间:2024/05/21 09:09
自动机用的是原来的
#include <stdio.h>#include <ctype.h>#include <string.h>char opword[]="+-*/=";char bordword[]="()";FILE *fin,*fout; int main(){char ch,token[40];int es=0,j,state,brp;if((fin=fopen("I1.txt","r"))==NULL){printf("\n打开词法分析输入文件出错!\n");return(1);}if((fout=fopen("O1.txt","w"))==NULL){printf("\n创建词法分析输出文件出错!\n");return(2);}ch=getc(fin);while(ch!=EOF){while(ch==' '||ch=='\n'||ch=='\t')ch=getc(fin);j=0;state=0;brp=1;while(brp){switch(state){case 0:if(ch=='.'){token[j++]=ch;state=1;ch=getc(fin);}else if(isdigit(ch)){token[j++]=ch;state=6;ch=getc(fin);}else if(isalpha(ch)){token[j++]=ch;ch=getc(fin);while(isalnum(ch)){token[j++]=ch;ch=getc(fin); }state=7;brp=0;}else if(strchr(bordword,ch)>0){token[j++]=ch;state=8;brp=0;ch=getc(fin);}else if(strchr(opword,ch)>0){token[j++]=ch;state=9;brp=0;ch=getc(fin);}else state=-1;break;case 1:if(isdigit(ch)){token[j++]=ch; ch=getc(fin);state=2;}else brp=0;break;case 2:while(isdigit(ch)){token[j++]=ch; ch=getc(fin);}if(ch=='E'||ch=='e'){token[j++]=ch; ch=getc(fin);state=3;}else brp=0;break;case 3:if(ch=='+'||ch=='-'){token[j++]=ch; state=4;ch=getc(fin);}else if(isdigit(ch)){token[j++]=ch; state=5;ch=getc(fin);}else brp=0;break;case 4:if(isdigit(ch)){token[j++]=ch; ch=getc(fin);state=5;}else brp=0;break;case 5:brp=0;break;case 6:while(isdigit(ch)){token[j++]=ch; ch=getc(fin);}if(ch=='.'){token[j++]=ch; ch=getc(fin);state=1;}else brp=0;break;default:state=-1;break;}}//printf("%d\n",state);token[j]='\0';if(state==6||state==5||state==2)fprintf(fout,"(%s,%s)\n","40",token);else if(state==7)fprintf(fout,"(%s,%s)\n","10",token);else if(state==8)fprintf(fout,"(%s,%s)\n","30",token);else if(state==9)fprintf(fout,"(%s,%s)\n","20",token); elsefprintf(fout,"(%s,%s)\n","ERROR",token);}fclose(fin);fclose(fout);printf("%d\n",es);return 0;}
- 编译原理实验改进版(词法分析)
- 编译原理实验----词法分析
- 编译原理实验---词法分析
- 编译原理--实验一 词法分析
- 编译原理实验 之 词法分析
- 【编译原理】实验1.词法分析
- 编译原理实验1-词法分析
- 编译原理课程实验--词法分析
- 编译原理实验一 词法分析程序
- 编译原理实验之词法分析
- 哈工大编译原理实验一词法分析
- 编译原理 词法分析
- 编译原理词法分析
- 编译原理 词法分析
- 编译原理词法分析
- 编译原理词法分析
- 编译原理词法分析
- 编译原理 词法分析
- 用串的顺序存储结构实现串替换操作Replace(&S,T,V)
- DWR群聊实现-第二节
- 判断字符串是否回文
- linux下挂载U盘、硬盘等
- 标准C---关于字符串操作
- 编译原理实验改进版(词法分析)
- Win7非密钥激活
- PhoneGap:(移动)Web框架 - WebApp封装成NativeApp - (集成到App中)
- 对一个n*n矩阵,通过行变换,使其每行元素的平均值按递增顺序排序
- 程序员面试相关的资料,收藏了,呵呵
- 【转】Java:Session详解
- I2C基本原理及对I2C Adapter的理解 20
- 心得2--Servlet详细介绍及应用分析 .
- SQL查询多条不重复记录值