pyPEG

Software captura de pantalla:
pyPEG
Detalles de software:
Versión: 2.4.1
Fecha de carga: 14 Apr 15
Promotor: Volker Birk
Licencia: Libre
Popularidad: 29

Rating: 1.5/5 (Total Votes: 2)

Python es un lenguaje de script agradable. Incluso se le da acceso a su propio programa de análisis y compilador. También le da acceso a diferentes otros analizadores para fines especiales como plantillas XML y de cadena.
Pero a veces es posible que desee tener su propio programa de análisis. Esto es lo que hay para pyPEG.
Para obtener una vista rápida de lo que está pasando, por favor lea este artículo sobre cómo analizar un lenguaje arbitrario a XML con pyPEG en mi blog.
¿Qué es PEG?
PEG significa Gramática Expresión de análisis. Es algo así como la idea de expresiones regulares para el contexto idiomas gratis; una explicación muy clara que encontrarás en el artículo de Wikipedia sobre PEG.
Con PEG puede describir los mismos idiomas como con BNF (y ella es incluso similar).
¿Qué es un analizador-intérprete?
Analizadores comunes no están utilizando PEG y el análisis sintáctico descendente, pero LR (n) o LL (n) y el análisis de abajo hacia arriba. Esto se traduce en la idea de implementar generadores de analizadores sintácticos.
Porque con LR (n) o LL (n) analizadores es necesario calcular un DFA en primer lugar, por lo general deja que el generador de analizadores sintácticos hacer esto para usted. El resultado es una implementación analizador para su gramática BNF, que era la de entrada. Se podría llamar a un generador de analizadores sintácticos un compilador de BNF para una implementación analizador.
Un analizador-intérprete trabaja como intérprete en vez de ser un compilador tal. Sólo dale tu gramática como entrada, y que analiza el lenguaje descrito de texto. No habrá programa generado.
Uso pyPEG
Eso significa: utilizando pyPEG es muy fácil;-) Si conoces expresiones regulares ya, usted aprenderá a utilizar pyPEG rápidamente.
Una pequeña muestra
Un ejemplo: pensar en un lenguaje sencillo como éste:
FAK función (n) {
& Nbsp; si (n == 0) {// 0! es 1 por definición
& Nbsp; devuelve 1;
& Nbsp;} else {
& Nbsp; de retorno n * FAK (n - 1);
& Nbsp;};
}
Un pyPEG para ese idioma se parece a la siguiente código (véase también el script de ejemplo):
comentario def (): return [re.compile (r "//.*"), re.compile ("/*.*?*/", re.S)]
def literal (): re.compile retorno (".? *" r'd * .d * | | d + ')
símbolo def (): return re.compile (r "w +")
operador def (): return re.compile (r "+ | - | * | / | ==")
operación def (): símbolo de retorno, operador, [literal, llamada_a_func]
expresión def (): return [literal, operación, llamada_a_func]
ExpressionList def (): return expresión, -1, ("", expresión)
returnstatement def (): palabra clave return ("return"), expresión
IfStatement def (): palabra clave return ("si"), "(", la expresión ")", bloque, palabra clave ("más"), bloque
declaración def (): return [IfStatement, returnstatement] ";"
bloque def (): return "{", -2, declaración, "}"
ParameterList def (): return "(", símbolo, -1, ("", símbolo), ")"
llamada_a_func def (): devuelve el símbolo "(", ExpressionList ")"
función def (): palabra clave return ("función"), símbolo, ParameterList, bloque
def simpleLanguage (): función de retorno

¿Qué hay de nuevo en esta versión:

  • Este es un comunicado de limpieza. Se ha corregido el código de parse () y componer ().

¿Qué hay de nuevo en la versión 1.4:.

  • Esta versión corrige algunos errores con el análisis packrat

¿Qué hay de nuevo en la versión 1.3:

  • Cambio de la tupla de nombres en Pyast por el símbolo (lista ) de clase, que es bastante compatible, pero compatible con el código más descriptivo en backends compilador, también.

¿Cuál es nuevo en la versión 1.2:.

  • Bugs con Unicode en el manejo de errores se fijaron

¿Qué hay de nuevo en la versión 1.1:.

  • Se ha añadido soporte Unicode

¿Qué hay de nuevo en la versión 0.46:.

  • pyPEG.print_trace True
  • La conversión pyPEG a Python 3.x ahora funciona a la perfección usando 2to3
  • Las reglas de la gramática que se aplican pueden rastrearse opcionalmente estableciendo
  • pyPEG dará salida a esta traza en stderr.

¿Qué hay de nuevo en la versión 0.45:.

  • Corrección de errores

¿Qué hay de nuevo en la versión 0.44:

  • pyPEG ahora decora cada objeto Pyast con nombre de archivo de origen y de la línea número.

Requisitos :

  • Python

Programas parecidos

Glulxe
Glulxe

11 May 15

Flexc++
Flexc++

14 Apr 15

Jikes
Jikes

3 Jun 15

MAWK
MAWK

17 Feb 15

Otro software de desarrollador Volker Birk

YML
YML

11 May 15

Comentarios a la pyPEG

Comentarios que no se encuentran
Añadir comentario
A su vez en las imágenes!