最近在学编译原理,实验课上也让写了文法类型的判断,这里是我自己写的一个Chomsky文法类型的判断 主要核心思想: 1.先判断是否属于0型文法(判断依据:α->β 其中α和β属于(非终结字符∪终结字符)的闭包的话,并且α至少含有一个非终结字符) 2.如果不是0型文法则结束,如果是0型文法的话,判断是否为1型文法(α的长度≤β的长度) 3.如果不是1型文法则结束,如果是1型文法的话,判断是否为2型文法(α是一个非终结字符,β同上的) 4.如果不是2型文法则结束,如果是2型文法的话,判断是否为3型文法(每个产生式的形式都是A->aB或者A->a) 5.还添加了右线型3型文法的判断和左线型3型文法的判断 系统流程图: 代码:
1 |
|
结果: