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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a cs.stackexchange
scroll top