È necessario rimuovere la ricorsione sinistra indiretta da CFG
-
03-11-2019 - |
Domanda
Devo rimuovere la ricorsione sinistra indiretta dal seguente CFG: rimuovere la ricorsione sinistra indiretta dal seguente CFG. $$ A → BA | B $$ $$ B → CD | E $$ $$ C → DF | G $$ $$ D → DF | Aa | CG $$
Nella seguente soluzione, ho ampliato tutti i non terminali per farli convertire in ricorsione diretta, anziché ricorsione indiretta (se applicabile), in modo da poter applicare la regola per la rimozione della ricorsione a sinistra diretta:
$$A → Ba → Cda → Dfda → Aafda$$ $$C → Df → Cgf$$ $$D → Df$$ $$D → Cg → Dfg$$ $$D → Aa → Dfdaa$$ So, it Diventa: $$ A → AAFDA | B $$ $$ B → CD | E $$ $$ C → CGF | G $$ $$ D → DF | Dfg | Dfdaa | ba | gg $$ Quindi, diventa (dopo la rimozione delle ricorsioni a sinistra diretta): $$ A → BA '$$ $$ A' → Afdaa '| EPS $$ $$ B → CD | E $$ $$ C → GC '$$ $$ C' → GFC '| EPS $$ $$ D → BAD '| Gg D '$$ $$ d' → fd '| fgd '| fdaad '| EPS $$
La mia domanda specifica è: devo seguire in questo modo (convertire tutte le regole di produzione provenienti da tutti i non terminali o dovrei farlo solo per uno, ad esempio?
Nessuna soluzione corretta