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.
aaaaaadeve analisar e não. Mas aaaaanalisa. Aparentemente, você está certo sobre os poderes de 2. A coisa deve estar com erros. ele analisa apenas aacom S = "aa" / "a" [S] "a". Você pode rastrear o que o analisador faz?