Ho la seguente grammatica:Creazione di una grammatica LL (1)
S → a S b S | b S a S | ε
Dal momento che sto provando a scrivere un piccolo compilatore per questo, mi piacerebbe renderlo LL (1). Vedo che sembra esserci un conflitto PRIMO/SEGUITO qui, e so che devo usare la sostituzione per risolverlo, ma non sono esattamente sicuro su come procedere. Ecco la mia grammatica proposta, ma non sono sicuro se sia corretta:
S-> aSbT | Epsilon
T-> bFaF | Epsilon
F-> epsilon
Qualcuno può dare una mano?
Grazie per la vostra utile risposta. Ero anche curioso di sapere cosa pensi della grammatica che ho proposto - mi sembra che sia anche LL (1) e non sia molto diverso da quello di Knuth. Inoltre non riesco a vedere alcuna stringa per la quale potrebbe fallire. –
@ JohnRoberts- Non penso che la grammatica funzioni correttamente, ad esempio non è possibile ottenere stringhe che iniziano con 'b'. – templatetypedef