Esi generateurs compilateurs

Générateurs de compilateurs Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d ? Informatique ESI www zegour uuuq com email d zegour esi dz CGénérateurs de compilateurs Introduction Yacc Lex Coco R CFonctionnement des générateurs de compilateurs Ils génèrent les parties d ? un compilateur à partir d ? une spéci ?cation concise Parties générées scanner analyseur syntaxico-sémantique générateur de code Spéci ?cation du scanner Ex grammaire régulière générateur scanner scanner générateur Spéci ?cation sémantique de l ? analyseur Ex grammaire d ? attribut Générateur De compilateurs Exemples compilateur Analyseur éditeur de liens Classes utilisateur ? Table des symboles ? Générateur de code ? Programme principal ? compilateur généré Yacc Lex Coco R générateur d ? analyseur syntaxique et sémantique pour C et Java générateur de scanner pour C Java et C générateur de scanner et d ? analyseur pour Java C Modula- Oberon CGénérateurs de compilateurs Introduction Yacc Lex Coco R CYacc - Yet another compiler compiler Histoire développé aux laboratoires Bell ensemble avec C et Unix ? Génère des analyseurs LALR ? À l ? origine sous Unix Aujourd'hui aussi sous Windows Linux ? A l ? origine pour C Aujourd'hui pour Java Utilisation sample y Yacc Nous décrivons ici la version de Java parser java javac parser class Versions actuelles Bison Byacc version GNU de Yacc http www gnu org software bison bison html Berkeley Yacc http byaccj sourceforge net CLangage d ? entrée pour Yacc Format général package Java et les lignes ? import ? Déclarations Yacc unités règles de précédence des opérateurs productions Déclarations Java champs méthodes Traduit vers class parser public void yyparse parser CYacc ?? Productions et actions sémantiques Productions Grammar Production Production NT Alternative Alternative Alternative NT T SemAction SemAction arbitrary Java statements NT ident T ident charConst Exemple expr term expr ' ' term ival ival ival Actions Sémantiques ? Peuvent contenir des instructions Java ? Peuvent appara? tre seulement à la ?n d ? une alternative ? Les attributs sont dénotés par des noms spéciaux attribut du coté gauche NTS i attribut du i-ème symbole du coté droit attr du premier symbole attr du second symbole CYacc ?? Attributs Pour les symboles terminaux ? Sont délivrés par le scanner scanner développé manuellement ou généré avec Lex ? Chaque unité lexicale a un attribut de type parserval class parserval int ival token value if the token should have an int attribute double dval token value if the token should have a double attribute String sval token value e g for ident and string Object obj token value for more complex tokens parserval int val constructors parserval double val parserval String val parserval Obj val ? Le scanner retourne les attributs dans la variable globale yylval Scanner Accès dans une action sémantique yylval new parserval n ival Pour les symboles non terminaux ? Chaque NTS a un attribut de type parserval valeurs plus complexes rangées dans obj ? Chaque a ?ectation à empile l ? attribut du NTS dans une pile d ? attributs

  • 33
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Aucune attribution requise
Partager
  • Détails
  • Publié le Mar 28, 2021
  • Catégorie Management
  • Langue French
  • Taille du fichier 67.4kB