Qualcuno può illuminarmi perché un parser di discesa ricorsivo con backtracking che prova le produzioni e (in quell'ordine) non riconosce la lingua formata dalla grammatica .S → a a S → a S a | a a
Sembra analizzare solo le parole dalla lingua .
Ho generato un simile parser usando questo generatore di parser ABNF con la regola di produzione S = "a" S "a" / "aa"
e il parser non riconosce la parola aaaaaa
, per esempio.
Mi aspetto che utilizzi la produzione fino a quando la concatenazione dei nodi terminali dell'albero di analisi da sinistra inizia con 7 ', quindi salgo l'albero di analisi scegliendo la produzione invece fino a quando l'albero sembra Questo:S → a aa
S
/ | \
a S a
/ | \
a S a
/ \
a a
aaaaaa
.
aaaaaa
dovrebbe analizzare e non lo fa. Ma aaaa
analizza. Apparentemente hai ragione sui poteri di 2. La cosa deve essere infastidita. analizza solo aa
con S = "aa" / "a" [S] "a"
. Riesci a rintracciare cosa fa il parser?