Motor de Análisis Sintáctico

Motor de Análisis Sintáctico

El motor de análisis sintáctico (Parsing Grammar Engine) (originalmente motor de gramática de Parrot) o PGE es un compilador y runtime para las reglas de Perl 6 para la máquina virtual Parrot.[1] PGE usa estas reglas para convertir una gramática de análisis de expresiones en bytecode de Parrot.

El motor, por tanto, compila reglas en un programa, a diferencia de la mayoría de máquinas virtuales y runtimes, que almacenan expresiones regulares en un formato interno secundario que es más tarde interpretado en tiempo de ejecución por un motor de expresiones regulares. El formato de las reglas que usa PGE puede expresar cualquier expresión regular y la mayor parte de las gramáticas formales, y por tanto constituye el primer paso de la cadena del compilador para todos los lenguajes basados en Parrot.

Al ejecutarlo, el bytecode generado por PGE será usado para analizar el texto como se describe en las reglas de entrada, generando un árbol de análisis. Dicho árbol puede ser manipulado directamente, o servir como entrada a la siguiente etapa de la cadena de herramientas de compilador de Parrot para generar un árbol sintáctico abstracto a partir del cual se pueda generar código máquina (si la gramática describe un lenguaje de programación).

Contenido

Historia

Originalmente se llamó P6GE y estaba escrito en C; PGE se tradujo entonces a Parrot nativo y se renombró poco después de su liberación inicial en Noviembre de 2004. Su autor es Patrick R. Michaud.[2] PGE se escribió para reducir la cantidad de trabajo necesario para implementar un compilador sobre Parrot. Además, se escribió para permitir de manera fácil que Perl 6 sea definido en Perl 6, aunque el desarrollo actual de Pugs no usa PGE como su gestor de reglas primario, sino que usa un motor nativo llamado PCR.[3]

Interioridades

PGE combina tres estilos de análisis:

  • Reglas de Perl 6
  • un analizador de precedencia de operadores
  • subrutinas específicas de análisis

La forma primaria es la de las reglas de Perl 6, de forma que una regla de PGE puede parecerse al siguiente ejemplo para una gramática que representa la suma únicamente:

rule término { <número> | \( <expresión> \) }
rule número { \d+ }
rule expresión { <término> ( '+' <término> )* }

El analizador de precedencia de operadores permite la construcción de una tabla de operadores que puede ser usada directamente por un analizador de estilo de reglas de Perl 6 como sigue:

rule expresión is optable { ... }
rule término { <número> | \( <expresión> \) }
rule número { \d+ }
proto término: is precedence('=')
is parsed(&término) {...}
proto infix:+ is looser('término:') {...}


De este modo se consigue el objetivo de definir una gramática simple para la adición, pero lo hace usando una combinación de una regla/regex al estilo de Perl 6 para término y para número junto con una shift-reduce optable para todo lo demás.

Generación de Código

Aunque PGE emite código máquina capaz de analizar una gramática descrita por una regla, y puede ser usado en tiempo de ejecución para manejar gramáticas simples y expresiones regulares incluidas en el código, su proposito primario es analizar lenguajes de alto nivel

La cadena de herramientas del compilador Parrot se divide en varias partes, de las cuales PGE es la primera. PGE convierte el código fuente a árboles de análisis sintáctico. El Motor de Árboles Sintácticos (Tree Grammar Engine - TGE) los convierte a continuación en Arboles Sintácticos Abstractos Parrot (Parrot Abstract Syntax Trees - PAST). Un segundo pase de TGE convierte a continuación un PAST en Árboles Sintácticos de Códigos de Operación Parrot (Parrot Opcode Syntax Trees - POST) que pueden ser transformados de forma directa en bytecodes ejecutables.

http://en.wikipedia.org/wiki/Image:Pge-overview.svg

Referencias

  1. Michaud, Patrick R. (22 de nov 2004). «Parrot Grammar Engine (PGE)».
  2. Michaud, Patrick R.]] (8 de nov. 2004). «First public release of grammar engine».
  3. "Agent Zhang" (17-09-2006). «PCR replaces PGE in Pugs».

Enlaces externos


Wikimedia foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Mira otros diccionarios:

  • Máquina virtual Parrot — ? Información general Última versión estable 3.6.0 Pájaros del Caribe 19 de julio de 2011 Género Máquina virtual …   Wikipedia Español

  • Perl 6 — Saltar a navegación, búsqueda Perl 6 Paradigma: multiparadigma Apareció en: 2000 Diseñado por: Larry Wall y la comunidad Perl Tipo de dato: Dinámico y estático Implementaciones …   Wikipedia Español

  • Perl — Desarrollador(es) Larry Wall www.perl.org Información general Paradigma multiparadigma, funcional, im …   Wikipedia Español

  • Razonamiento basado en casos — Saltar a navegación, búsqueda El Razonamiento basado en casos es el proceso de solucionar nuevos problemas basándose en las soluciones de problemas anteriores. Un mecánico de automóviles que repara un motor porque recordó que otro auto presentaba …   Wikipedia Español

  • General Architecture for Text Engineering — GATE ventana principal de GATE Developer v5 Desarrollador GATE research team …   Wikipedia Español

  • Reconocimiento automático de matrículas — El sistema debe ser capaz de reconocer diferentes tipos de matrículas El reconocimiento automático de matrículas (Automatic number plate recognition o ANPR en inglés) es un método de vigilancia en masa que utiliza reconocimiento óptico de… …   Wikipedia Español

  • Videojuego de aventura — Los videojuegos de aventura son un género de videojuegos, caracterizados por la investigación, exploración, la solución de rompecabezas, la interacción con personajes del videojuego, y un enfoque en el relato en vez de desafíos basados en… …   Wikipedia Español

  • Check Wikipedia — Wikiproyecto:Check Wikipedia Saltar a navegación, búsqueda Esta página contiene de forma consciente fallos ortográficos. Los bots no deben intentar corregirlos. Atajo PR:CWPR:CW …   Wikipedia Español

  • Lingüística computacional — La lingüística computacional es un campo multidisciplinar de la lingüística y la informática que utiliza la informática para estudiar y tratar el lenguaje humano. Para lograrlo, intenta modelar de forma lógica el lenguaje natural desde un punto… …   Wikipedia Español

  • SPIP — Saltar a navegación, búsqueda {{{pie}}} Desarrollador: Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint James y otros] Versión: 2.0.4 / 23 de febrero de …   Wikipedia Español

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”