Description
输入开始符号,非终结符,终结符,产生式
按非终结符顺序输出产生式;
Input
输入开始符号;
非终结符个数,非终结符,空格符分隔;
终结符个数,终结符,空格符分隔;
产生式的个数,各产生式的左边和右边符号,空格符分隔;
Output
G[开始符号]:
按非终结符顺序输出各产生式;
Sample Input:
Z
8 Z E F P G T Q S
3 + * i
18
Z E+T
E E
P G
F F
P G
G G
T T*i
Q E
S i
E S+F
F FP
G GG
Q E+F
E T
F P
G F
Q T
Q S
Sample Output:
G[Z]:
Z::=E+T
E::=E | S+F | T
F::=F | FP | P
P::=G | G
G::=G | GG | F
T::=T*i
Q::=E | E+F | T | S
S::=i
Code:
#include <iostream>
#include <vector>
#include <string>
#include <map>
using namespace std;
int main(int argc, char const *argv[])
{
// input data
string S;
struct