天天看点

自动机实验

#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);    //用于转换正规式。