词法分析之浮点数分析
来源:互联网 发布:js控制span显示隐藏 编辑:程序博客网 时间:2024/06/06 23:19
#include <stdio.h>
#include <ctype.h>
#include <string.h>
char *nexttoken();
char nextchar();
void next();
void back();
char* gettoken();
char cbuf[]="12.3*********klj12.2e2jj778";
int forward = -1;
int main(){
while(1){
printf("%s\n",nexttoken());
if(forward >= strlen(cbuf)-1){
getchar();
return 0;
}
}
}
int state;
int start;
char* nexttoken(){
char c;
state = 12;
while(1){
switch(state){
case 12:
c = nextchar();
start = forward;
if(isdigit(c)){
state = 13;
}else{
next();
}
break;
case 13:
c = nextchar();
if(isdigit(c))
state = 13;
else if(c == 'e'||c == 'E')
state = 16;
else if(c == '.')
state = 14;
else
state = 19;
break;
case 14:
c = nextchar();
if(isdigit(c))
state = 15;
break;
case 15:
c = nextchar();
if(isdigit(c))
state = 15;
else if(c == 'e'|| c == 'E')
state = 16;
else
state = 19;
break;
case 16:
c = nextchar();
if(isdigit(c))
state = 18;
else if(c == '+' || c == '-')
state = 17;
break;
case 17:
c = nextchar();
if(isdigit(c))
state = 18;
break;
case 18:
c = nextchar();
if(isdigit(c))
state = 18;
else
state = 19;
break;
case 19:
back();
return gettoken();
}
}
}
char nextchar(){
forward ++;
return cbuf[forward];
}
void back(){
forward --;
}
void next(){
forward ++;
}
char token_buf[128];
char* gettoken(){
int i,j=0;
for(i = start; i <= forward; i ++){
token_buf[j++] = cbuf[i];
}
token_buf[j] = '\0';
return token_buf;
}
- 词法分析之浮点数分析
- javascript之词法分析
- 浮点数分析
- 编译原理课程设计之无符号数四则运算词法分析
- 编译原理 之 词法分析
- 编译原理之词法分析
- 编译原理之词法分析
- js笔记之词法分析
- 编译原理之词法分析
- 编译原理之词法分析
- 词法分析之动态字符串
- 编译器之词法分析c
- 编译原理之词法分析
- 编译原理之词法分析
- Java中的浮点数分析
- Java中的浮点数分析
- 词法分析
- 词法分析
- Android如何解析json数组对象
- 浅析C++中的this指针
- 求N位数的所有自然回归数(水仙花数)
- c++一般指针的深层复制和浅层复制(1)
- flex 组件添加鼠标手型
- 词法分析之浮点数分析
- 切分 字符串指针数组(如环境变量) 的两种方法, 数组下标 和 指针
- string类详解
- 水浒中的诗摘头保尾可谓豪气冲天
- c 语言函数 fflush()
- java Comparator用法实现接口Comparator
- 让人相当郁闷的命名问题
- Android:为什么现在google不让结束整个程序,只让结束单个Activity
- 拾回C++ boost