Alguém pode me esclarecer por que um analisador de descida recursiva com retrocesso que tenta as produções e S → a a (nessa ordem) não reconhece o idioma formado pela gramática S → a S a | a a .
Parece analisar apenas as palavras do idioma .
Gerei esse analisador usando este ABNF Parser Generator com a regra de produção S = "a" S "a" / "aa"
e o analisador não reconhece a palavra aaaaaa
, por exemplo.
Eu esperaria que ele usasse a produção até que a concatenação dos nós terminais da árvore de análise a partir da esquerda inicie com 7 's, e suba a árvore de análise escolhendo a produção S → a a em vez disso até que a árvore pareça como isso:a
S
/ | \
a S a
/ | \
a S a
/ \
a a
aaaaaa
.
aaaaaa
deve analisar e não. Mas aaaa
analisa. Aparentemente, você está certo sobre os poderes de 2. A coisa deve estar com erros. ele analisa apenas aa
com S = "aa" / "a" [S] "a"
. Você pode rastrear o que o analisador faz?