Return to search

Transformation automatique d'arbres syntaxiques avec SableCC

Dans la partie frontale d'un compilateur, il est souvent usuel de transformer l'arbre syntaxique concret correspondant à la grammaire utilisée lors de l'analyse syntaxique en un arbre simplifié appelé arbre syntaxique abstrait qui retient uniquement l'essentiel des éléments de l'arbre syntaxique concret et qui par ailleurs est plus approprié pour les étapes ultérieures de la compilation. La réalisation d'une telle transformation avec les générateurs de compilateurs traditionnels peut nécessiter d'écrire une quantité considérable de code répétitif et très enclin aux erreurs dans la grammaire. Dans ce mémoire, nous introduisons un nouveau mécanisme pour spécifier des transformations d'un arbre syntaxique concret vers un arbre syntaxique abstrait durant l'analyse syntaxique. Doté d'une syntaxe intuitive, ce mécanisme permet la spécification de transformations ascendantes de manière efficace et déterministe. De plus, des vérifications effectuées sur ces transformations garantissent leur exactitude. Nous avons implanté ce mécanisme à l'intérieur de l'outil SableCC, un générateur de compilateurs. Le résultat est un outil capable de générer des analyseurs lexicaux et syntaxiques dans lesquelles sont enchâssées des actions de construction d'arbres syntaxiques et des classes utilitaires (incluant des visiteurs) à partir de simples spécifications grammaticales. ______________________________________________________________________________ MOTS-CLÉS DE L’AUTEUR : Arbre syntaxique concret, Arbre syntaxique abstrait, Générateur de compilateurs, Analyse syntaxique.

Identiferoai:union.ndltd.org:LACETR/oai:collectionscanada.gc.ca:QMUQ.2015
Date January 2006
CreatorsAgbakpem, Komivi Kevin
Source SetsLibrary and Archives Canada ETDs Repository / Centre d'archives des thèses électroniques de Bibliothèque et Archives Canada
Detected LanguageFrench
TypeMémoire accepté, PeerReviewed
Formatapplication/pdf
Relationhttp://www.archipel.uqam.ca/2015/

Page generated in 0.0019 seconds