Conversão PEG para BNF


7

A análise de gramáticas de expressão (PEGs) é inequívoca e possui uma sintaxe superficialmente semelhante ao BNF , mas inclui três diferenças importantes:

  1. O operador de escolha ordenada e1 / e2 / e3.
  2. O e predicado &.
  3. O operador não !.

Eu tenho algumas perguntas:

  1. Os idiomas reconhecidos pelos PEGs são todos livres de contexto?
  2. Se a resposta a (1) for negativa, existem formalismos gramaticais expressivos garantidos para produzir apenas gramáticas inequívocas? Em particular, cair &e !produzir apenas gramáticas sem contexto?
  3. Se todos os PEGs forem livres de contexto, eles podem ser convertidos em um BNF equivalente por meio de um algoritmo?

O contexto é que eu gostaria de calcular funções geradoras para uma biblioteca PEG usando o teorema de enumeração de Chomsky-Schützenberger . Isso parece exigir uma especificação da gramática em um formato padrão semelhante ao BNF.

Respostas:


6
  1. Os idiomas reconhecidos pelos PEGs são todos livres de contexto?

Não, como apontado por Brian Ford em seu artigo de 2004 sobre a introdução de PEGs , do qual é a seguinte citação curta:

Teorema: A classe de PELs inclui linguagens sem contexto.

Prova: a linguagem de exemplo clássica não é livre de contexto, mas podemos reconhecê-la com um PEG , onde R contém as seguintes definições: anbncnG=({A,B,D},{a,b,c},R,D)

AaAb/ε
BbBc/ε
D&(A!b)aB!.

 

  1. Se a resposta a (1) for negativa, existem formalismos gramaticais expressivos garantidos para produzir apenas gramáticas inequívocas? Em particular, seria soltar eproduzir apenas gramáticas livres de contexto?&!

Mesmo sem(e, portanto, sem , uma vez que é formalmente definido em termos de ), você ainda teria que lidar com o complemento implícito oculto na definição de escolha ordenada. Não tenho um exemplo concreto de escolha ordenada que leve a uma não CFL, mas tentaria encontrar uma começando com dois CFGs e cuja diferença não é uma CFL e que pode ser convertida nos PEGs e . Agora, se é algum símbolo que não está em nenhum dos idiomas, o PEG deve reconhecer , que não é uma CFL.!&!L1L2P1P2cP2/P1cL2(L1L2)c

  1. Se todos os PEGs forem livres de contexto, eles poderão ser convertidos em um BNF equivalente por meio de um algoritmo?

Se minha conjectura acima estiver correta, essa pergunta não será aplicável, mas, de qualquer forma, não há algoritmo que eu conheça para converter entre PEGs e CFGs, e acredito que a equivalência de um PEG e um CFG é indecidível. Este fato complica o procedimento de prova que proponho acima. :)


Não sei se segui seu exemplo de . No documento "Os PEGs usam um operador de escolha priorizada '/'. Esse operador lista padrões alternativos a serem testados em ordem, usando incondicionalmente a primeira correspondência bem-sucedida". Qualquer string incluindo falharia na primeira condição; portanto, o idioma reconhecido é , que é claramente livre de contexto. P1/P2CCL1(L2C)
RecursivelyIronic

"Acredito que a equivalência de um PEG e um CFG é indecidível" Isso provavelmente é verdade, mas irrelevante. Muitos procedimentos geram especificações equivalentes (por exemplo, conversão para a Forma Normal de Chomsky), mesmo que a decisão da equivalência de gramáticas arbitrárias seja indecidível.
RecursivelyIronic

11
@ recursivamente: não é assim que a escolha ordenada pelo PEG funciona. O fallback para só acontece se não corresponder. Se corresponder, o fato de o padrão falhar posteriormente não causa um fallback. A escolha ordenada não é apenas uma maneira de desambiguar a análise. L2cL1
rici 23/02

11
Ah, tudo bem. O idioma não seria ? De qualquer forma, seu ponto subjacente parece correto, portanto o teorema de Chomsky – Schützenberger não se aplica. Precisarei mudar meu projeto para oferecer suporte a uma biblioteca de análise mais padrão baseada em CFGs. Obrigado! L1(L2L1)c
RecursivelyIronic

@RecursivelyIronic: Sim, você está certo, eu deveria ter escrito isso como uma diferença definida e resolvi a resposta. Obrigado. (Pessoalmente, acho difícil entender a semântica do PEG, mas parte disso é falta de experiência. O que é muito circular. Mas eu não as usaria em um contexto em que desejasse analisar ou transformar a gramática, precisamente por causa da dificuldade de analisar e / ou transformando gramáticas PEG).
rici
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.