#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); //用于转换正规式。 }
![](https://img2024.cnblogs.com/blog/35695/202408/35695-20240826070647288-243310440.jpg)