Remove Unit Production Rules
| > | P:=table():
P[S]:={[A,a],[B]}:P[B]:={[A],[A,b]}: P[A]:={[a],[B,c],[B]}: cfg:=mkCFG({S,A,B},{a,b,c},S,op(P)); |
| (10.3.1) |
| > | type(cfg,CFG); |
| (10.3.2) |
| > | type(cfg,unitFreeCFG); |
| (10.3.3) |
| > | removeUnitCFG(cfg); |
| (10.3.4) |
| > | type(%,unitFreeCFG); |
| (10.3.5) |
| > | cfg := mkCFG({V0, V1, V2, V3},{a1, a2},V0,table([V1 = {[V1, V3, a2, a1], [V2, a1]}, V2 = {[V3, V0]}, V0 = {[V2]}])); |
| (10.3.6) |
| > | removeUnitCFG(cfg); |
| (10.3.7) |
| > |
| > | cfg:=mkCFG({V0, V1, V2, V3, V4}, {a1, a2, a3}, V0, table([V4 = {[V2],[V0]},V0 = {[V1, V4, V2], [V2], [lambda]}, V2 = {[V4, a2]},V3 = {[V4], [a2]}])); |
| (10.3.8) |
| > | removeLambdaCFG(cfg); |
| (10.3.9) |
| > | removeUnitCFG(%); |
| (10.3.10) |
| > | cfg:=randomCFG(5,3); |
| (10.3.11) |
| > | removeUnitCFG(cfg); |
| (10.3.12) |
| > |
| > |
| > |