fbpx
Wikipedia

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).

Historia editar

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 editar

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 propósito 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 Árboles 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.

Referencias editar

  1. Michaud, Patrick R. (22 de noviembre de 2004). . Archivado desde el original el 20 de diciembre de 2005. 
  2. Michaud, Patrick R. (8 de nov. 2004). «First public release of grammar engine». 
  3. "Agent Zhang" (17 de septiembre de 2006). «PCR replaces PGE in Pugs». 

Enlaces externos editar

  • «Parsers, Perl 6 Rules, and the Parrot Grammar Engine». 28 de junio de 2006. 


  •   Datos: Q3325088

motor, análisis, sintáctico, motor, análisis, sintáctico, parsing, grammar, engine, originalmente, motor, gramática, parrot, compilador, runtime, para, reglas, perl, para, máquina, virtual, parrot, estas, reglas, para, convertir, gramática, análisis, expresion. El motor de analisis sintactico Parsing Grammar Engine originalmente motor de gramatica de Parrot o PGE es un compilador y runtime para las reglas de Perl 6 para la maquina virtual Parrot 1 PGE usa estas reglas para convertir una gramatica de analisis de expresiones en bytecode de Parrot El motor por tanto compila reglas en un programa a diferencia de la mayoria de maquinas virtuales y runtimes que almacenan expresiones regulares en un formato interno secundario que es mas tarde interpretado en tiempo de ejecucion por un motor de expresiones regulares El formato de las reglas que usa PGE puede expresar cualquier expresion regular y la mayor parte de las gramaticas 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 sera usado para analizar el texto como se describe en las reglas de entrada generando un arbol de analisis Dicho arbol puede ser manipulado directamente o servir como entrada a la siguiente etapa de la cadena de herramientas de compilador de Parrot para generar un arbol sintactico abstracto a partir del cual se pueda generar codigo maquina si la gramatica describe un lenguaje de programacion Indice 1 Historia 2 Interioridades 3 Referencias 4 Enlaces externosHistoria editarOriginalmente se llamo P6GE y estaba escrito en C PGE se tradujo entonces a Parrot nativo y se renombro poco despues de su liberacion inicial en noviembre de 2004 Su autor es Patrick R Michaud 2 PGE se escribio para reducir la cantidad de trabajo necesario para implementar un compilador sobre Parrot Ademas se escribio para permitir de manera facil 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 editarPGE combina tres estilos de analisis Reglas de Perl 6 un analizador de precedencia de operadores subrutinas especificas de analisis 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 gramatica que representa la suma unicamente rule termino lt numero gt lt expresion gt rule numero d rule expresion lt termino gt lt termino gt El analizador de precedencia de operadores permite la construccion de una tabla de operadores que puede ser usada directamente por un analizador de estilo de reglas de Perl 6 como sigue rule expresion is optable rule termino lt numero gt lt expresion gt rule numero d proto termino is precedence is parsed amp termino proto infix is looser termino De este modo se consigue el objetivo de definir una gramatica simple para la adicion pero lo hace usando una combinacion de una regla regex al estilo de Perl 6 para termino y para numero junto con una shift reduce optable para todo lo demas Generacion de Codigo Aunque PGE emite codigo maquina capaz de analizar una gramatica descrita por una regla y puede ser usado en tiempo de ejecucion para manejar gramaticas simples y expresiones regulares incluidas en el codigo su proposito primario es analizar lenguajes de alto nivelLa cadena de herramientas del compilador Parrot se divide en varias partes de las cuales PGE es la primera PGE convierte el codigo fuente a arboles de analisis sintactico El Motor de Arboles Sintacticos Tree Grammar Engine TGE los convierte a continuacion en Arboles Sintacticos Abstractos Parrot Parrot Abstract Syntax Trees PAST Un segundo pase de TGE convierte a continuacion un PAST en Arboles Sintacticos de Codigos de Operacion Parrot Parrot Opcode Syntax Trees POST que pueden ser transformados de forma directa en bytecodes ejecutables Referencias editar Michaud Patrick R 22 de noviembre de 2004 Parrot Grammar Engine PGE Archivado desde el original el 20 de diciembre de 2005 Michaud Patrick R 8 de nov 2004 First public release of grammar engine Agent Zhang 17 de septiembre de 2006 PCR replaces PGE in Pugs Enlaces externos editar Parsers Perl 6 Rules and the Parrot Grammar Engine 28 de junio de 2006 nbsp Datos Q3325088 Obtenido de https es wikipedia org w index php title Motor de Analisis Sintactico amp oldid 117376055, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos