Parser Grammar Engine

Parser Grammar Engine

Moteur d'analyse de grammaire

Page d'aide sur l'homonymie Pour les articles homonymes, voir PGE.

Le Parser Grammar Engine (PGE ou en français, moteur d'analyse de grammaire) est un compilateur et un moteur d'exécution pour les regex Perl 6 pour la machine virtuelle Parrot.[1] PGE utilise ses règles pour convertir une parsing expression grammar en bytecode Parrot.

Il compile donc les règles en un programme, contrairement à la plupart des machines virtuelles, qui stockent les expressions rationnelles en un format interne secondaire qui est ensuite interprété au moteur d'exécution par un moteur de gestion d'expressions rationnelles en ce format. Le format des règles analysables par PGE peut exprimer toute expression rationnelle et beaucoup de grammaires formelles. Comme tel, PGE forme le premier maillon d'une chaîne de compilation de langages de haut niveau; chaîne dont parrot est le dorsal.

Lorsque exécuté, le bytecode généré par PGE analysera le texte comme spécifié par les règles d'entrée, générant un arbre d'analyse.
Celui-ci sera manipulé directement ou passé au maillon suivant de la chaîne de compilation de Parrot afin de générer un AST à partir duquel la génération de code peut être faite si la grammaire décrit un langage de programmation.

Sommaire

Histoire

Originellement nommé P6GE et écrit en langage C, PGE a été manuellement transcrit en source Parrot et renommé peu après sa release initiale en novembre 2004. Son auteur est Patrick R. Michaud.[2] il a écrit PGE afin de réduire la quantité de travail nécessaire à la mise en œuvre d'un maillon compilateur au dessus de Parrot. Il a aussi écrit PGE pour permettre l'autohébergement de Perl 6, bien que le développement de la version courante de Pugs n'utilise plus PGE mais un engin natif appelé PCR[3].

Internes

PGE combines trois styles d'analyse :

  • les règles Perl
  • un analyseur à précédence d'opérateur
  • des sous-routines spécialisées

Le style premier est celui des règles Perl 6, donc un règle PGE peut ressembler à ceci pour une grammaire qui décrit un langage qui supporte seulement l'opérateur d'addition :

rule term   { <number> | \( <expr> \) }
rule number { \d+ }
rule expr   { <term> ( '+' <term> )* }

L'analyseur à précédence d'opérateurs permet de construire une table d'opérateurs qui peut être utilisée dans un analyseur Perl 6. Ainsi :

rule expr is optable { ... }
rule term   { <number> | \( <expr> \) }
rule number { \d+ }
proto term: is precedence('=')
            is parsed(&term) {...}
proto infix:+ is looser('term:') {...}

Cela accomplit la même chose que la grammaire précédente. mais le fait en utilisant une combinaison de regex et de règles pour term et number et un automate shift-reduce pour tout le reste.

Génération de code

Bien que la sortie PGE génère du code Parrot qui analyse la grammaire décrite par une règle, et peut donc être utilisé pour traiter des grammaires simples et des expressions rationnelles, son but principal est l'analyse de langages de haut niveau.

La chaîne de compilation Parrot est divisée en plusieurs parties, dont PGE est la première. PGE convertit le code source en un arbre d'analyse. TGE, le Tree Grammar Engine le convertit ensuite en PAST (Parrot Abstract Syntax Tree, ou, en français, Arbre syntaxique d'analyse). Une seconde passe de TGE convertit le PAST en POST (Parrot Opcode Syntax Tree, ou, en français Arbre syntaxique d'opcodes) qui est directement transformé en bytecode exécutable.

Fichier:Pge-overview.svg

Références

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

Liens externes

Ce document provient de « Moteur d%27analyse de grammaire ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Parser Grammar Engine de Wikipédia en français (auteurs)

Игры ⚽ Нужно решить контрольную?

Regardez d'autres dictionnaires:

  • Parser Grammar Engine — The Parser Grammar Engine (originally Parrot Grammar Engine) or PGE is a compiler and runtime for a Perl 6 rules for the Parrot virtual machine. [cite web | url=http://search.cpan.org/ ltoetsch/parrot 0.2.2/compilers/pge/README | title=Parrot… …   Wikipedia

  • Operator-precedence parser — An operator precedence parser is a bottom up parser that interprets an operator precedence grammar. For example, most calculators use operator precedence parsers to convert from the human readable infix notation with order of operations format… …   Wikipedia

  • Comparison of parser generators — This is a list of notable lexer generators and parser generators for various language classes. Contents 1 Regular languages 2 Deterministic context free languages 3 Parsing expression grammars, deterministic boolean grammars …   Wikipedia

  • Parser — Ein Parser [ˈpɑːʁzɐ] (engl. to parse, „analysieren“, bzw. lateinisch pars, „Teil“; im Deutschen gelegentlich auch Zerteiler) ist ein Computerprogramm, das in der Computertechnik für die Zerlegung und Umwandlung einer beliebigen Eingabe in ein für …   Deutsch Wikipedia

  • Irrlicht Engine Extentions — Being the open ended project it is, the Irrlicht Engine has various first party and third party extensions to even further power up the engine.VideoThere are no known extensions for the video rendering capabilities of Irrlicht.AudioirrKlangAudio… …   Wikipedia

  • GOLD (parser) — Infobox Software name = GOLD Parsing System caption = developer = Devin Cook [http://www.devincook.com/goldparser/contributors Multiple Contributors] latest release date = 2007 07 29 latest release version = 3.4.4 operating system = Windows… …   Wikipedia

  • Lemon Parser — Lemon is an LALR parser generator for C or C++. It does the same job as GNU bison and yacc; however, Lemon is not another bison or yacc clone. It uses a different grammar syntax which is designed to reduce the number of coding errors. Lemon also… …   Wikipedia

  • Parrot virtual machine — Developer(s) Parrot Foundation Stable release 3.10.0[1] / November 16, 2011; 7 days ago …   Wikipedia

  • Moteur D'analyse De Grammaire — Pour les articles homonymes, voir PGE. Le Parser Grammar Engine (PGE ou en français, moteur d analyse de grammaire) est un compilateur et un moteur d exécution pour les regex Perl 6 pour la machine virtuelle Parrot.[1] PGE utilise ses règles pour …   Wikipédia en Français

  • Moteur d'analyse de grammaire — Pour les articles homonymes, voir PGE. Le Parser Grammar Engine (PGE ou en français, moteur d analyse de grammaire) est un compilateur et un moteur d exécution pour les regex Perl 6 pour la machine virtuelle Parrot[1]. PGE utilise ses règles pour …   Wikipédia en Français

Share the article and excerpts

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