Desde esta página wikipedia:¿Cuáles son las diferencias entre PEG y CFG?
La diferencia fundamental entre gramáticas libres de contexto y el análisis gramáticas de expresión es que el operador elección del PEG se ordenó. Si la primera alternativa tiene éxito, se ignora la segunda alternativa . Por lo tanto, la opción ordenada no es conmutativa, a diferencia de elección desordenada como en las gramáticas y expresiones regulares sin contexto. La elección ordenada es análoga a los operadores de corte suaves disponibles en algunos lenguajes de programación lógicos .
¿Por qué el operador de elección de PEG cortocircuita la correspondencia? ¿Es porque para minimizar el uso de la memoria (debido a la memorización)?
No estoy seguro de cuál es el operador de elección en las expresiones regulares, pero supongamos que es esto: /[aeiou]/
para que coincida con una vocal. ¡Entonces esta expresión regular es conmutativa porque podría haberla escrito en cualquiera de las 5! (cinco factoriales) permutaciones de los caracteres vocálicos? es decir, /[aeiou]/
se comporta igual que /[eiaou]/
. ¿Cuál es la ventaja de que sea conmutativa? (No conmutatividad de compárese con PEG)
La consecuencia es que si un CFG es transcrito directamente a un PEG, cualquier ambigüedad en el anterior se resuelve mediante recoger de forma determinista un análisis sintáctico árbol de los posibles análisis sintácticos. Por eligiendo cuidadosamente el orden en el que las alternativas de gramática están especificadas, un programador tiene un gran control sobre qué árbol de análisis está seleccionado.
¿Está diciendo esto que la gramática de PEG es superior a la de CFG?
"Superior"? ¿Cuál es su criterio para "superior"? – Gabe
Para la conmutatividad, piense en '(air | airplane)' tratando de hacer coincidir la palabra avión. – xanatos
Parece que está confundiendo los conceptos de operador de opción y clase de carácter. En expresiones regulares, las clases de caracteres están delimitadas por corchetes '[aeiou]' mientras que el operador de elección es el carácter de tubería '|'. En PEG, el operador de elección es, en cambio, el carácter de barra inclinada '/'. – hippietrail