本程序的基本数据结构是一个字符型的二维数组。
先将文本文件一行一行的读入二维字符数组中,每一行只有一个产生式;
然后将二维数组中的每一行进行判断处理,先通过扫描找到每一行的推导符号“->”;
对“->”前面以及后面的字符分开进行处理,分别对其进行终结字符与非终结字符数量的统计;
比较产生式左部与右部所有的终结字符与非终结字符的数量,分别对不同的情况进行判断,将判断的结果保存在一个一位数组中(所有情况都不符合用-1标记);
对一维数组按从小到大的顺序进行冒泡排序,所以一位数组的第一个元素的大小即为此文法的类型,进行输出(-1则为不符合所有文法类型)。
输入文件格式样例:
S->aA
A->aB
A->dB
A->#
B->aB
B->dB
B->#
1