EPAL, o idioma dos palíndromos pares, é definido como o idioma gerado pela seguinte gramática inequívoca e livre de contexto:
O EPAL é o 'bane' de muitos algoritmos de análise: ainda não encontrei nenhum algoritmo de análise para CFGs inequívocos que possam analisar qualquer gramática que descreva o idioma. É frequentemente usado para mostrar que existem CFGs inequívocos que não podem ser analisados por um analisador específico. Isso inspirou minha pergunta:
Existe algum algoritmo de análise que aceita apenas CFGs inequívocos que funcionam no EPAL?
Obviamente, é possível projetar um analisador ad-hoc de duas passagens para a gramática que analisa o idioma em tempo linear. Estou interessado em analisar métodos que não foram projetados especificamente com o EPAL em mente.
fonte
Respostas:
Considere o seguinte esboço de uma estratégia de análise por seu próprio risco.
Em vez de ler a entrada apenas de uma extremidade, lemos de ambos os lados e procuramos regras de correspondência. Podemos fazer isso no estilo descendente recursivo; em uma chamada para , encontre o prefixo w e o sufixo v na entrada, de modo que exista uma regra A → w B v , desça para B ( ) na palavra restante. Se não houver uma regra correspondente, rejeite a palavra.A() w v A→wBv B()
A idéia não funciona para gramáticas não lineares. Gramáticas lineares, porém ambíguas, em geral não podem ser analisadas sem retorno (pelo menos para entradas negativas).
fonte