1203 有穷自动机
2015-12-03 18:49
204 查看
#include<stdio.h>
#define MAX 100
typedef struct //构造一个邻接表 用于存储NFA
{
char name;
char line[MAX];
}node;
void tran(){ //专门做语句的转换操作
}
void automata(char R[],int i){
int j = 0;
int n = i;
while(R[j] != '#'){
if(R[i] == '(')
{
printf("//在这里是做把'()'里的字符串里的语句初步进行转换,进行递归分解");
//在这里是做把'()'里的字符串里的语句初步进行转换,进行递归分解
}
else if(R[i] == '|'){
printf("//在这里就是把A和B两个状态节点分成 语句1 | 语句2 分成两路连接");
//在这里就是把A和B两个状态节点分成 语句1 | 语句2 分成两路连接
}
else if(R[i] == '*'){
printf("//在这里就是把前一个状态节点进行自循环。");
//在这里就是把前一个状态节点进行自循环。
}
else{
//在这里进行一般的转换。
printf("//在这里进行一般的转换");
}
j++;
}
}
void main()
{
char R[MAX];
int i=0;
printf("请输入要转换的正规式:\n");
while(R[i-1] != '#'){
scanf("%c",&R[i]);
i++;
}
automata(R,i); //用于转换正规式。
}
#define MAX 100
typedef struct //构造一个邻接表 用于存储NFA
{
char name;
char line[MAX];
}node;
void tran(){ //专门做语句的转换操作
}
void automata(char R[],int i){
int j = 0;
int n = i;
while(R[j] != '#'){
if(R[i] == '(')
{
printf("//在这里是做把'()'里的字符串里的语句初步进行转换,进行递归分解");
//在这里是做把'()'里的字符串里的语句初步进行转换,进行递归分解
}
else if(R[i] == '|'){
printf("//在这里就是把A和B两个状态节点分成 语句1 | 语句2 分成两路连接");
//在这里就是把A和B两个状态节点分成 语句1 | 语句2 分成两路连接
}
else if(R[i] == '*'){
printf("//在这里就是把前一个状态节点进行自循环。");
//在这里就是把前一个状态节点进行自循环。
}
else{
//在这里进行一般的转换。
printf("//在这里进行一般的转换");
}
j++;
}
}
void main()
{
char R[MAX];
int i=0;
printf("请输入要转换的正规式:\n");
while(R[i-1] != '#'){
scanf("%c",&R[i]);
i++;
}
automata(R,i); //用于转换正规式。
}
相关文章推荐
- 解决AngularJS中update2次出现的$promise属性无法识别的问题
- 12.3 实验三 进程调度模拟程序
- Django多语言化
- [投稿]Speex回声消除代码分析
- 设置动画的透明度,透明度的渐变
- HTTP协议
- 帮个忙改个sql错误我实在是找不到哪里错了
- BZOJ2038: [2009国家集训队]小Z的袜子(hose)
- 移动M站 相关搜索
- AHRS(航姿参考系统)和IMU(惯性测量单元)的区别
- Centos7更改默认启动模式
- Cookie与Session的区别
- hdu 5501 贪心+DP
- TCP分段与IP分片
- 区域生长算法的思路整理
- java中"=="和equals()的区别
- 基于MLlib的机器学习--聚类
- sql server 中and 和or
- Convert View To Bitmap
- 如何优化 Android Studio 启动、编译和运行速度?