#include<iostream> #include<string.h> using namespace std; class grammer { private: int flag;//判别是NFA还是DFA的标识符 char K[50];//有穷非空状态集合 char E[50];//有穷非空的输入字母表 char str[50];//存放待识别的字符串 char ch[20][20];//存放从 K*E到 K的映射 public: char**p; //数组指针 int line; //确定行的位置 int m;//要识别的字符串长度 int VN;//控制非终结符号输出的变量 int VT;//控制终结符号输出的变量 int i,j; grammer() //构造函数 { int i; line=0; cout<<"输入要输入文法的个数:"<<endl; int n; //文法个数 cin>>n; line=n; //每输入一个规则,行作相应的变动 p=new char*[n]; //申请空间,用来存放规则 for(i=0;i<n;i++) for(i=0;i<n;i++) { p[i]=new char[50]; //用来存放第i个规则 } for( i=0;i<line;i++) for(int j=0;j<50;j++) //将所用的字符都用‘ ’字符填充 p[i][j]='