Keine Cache-Version

Caching deaktiviert Standardeinstellung für diese Seite:aktiviert (code LNG204)
Wenn die Anzeige zu langsam ist, können Sie den Benutzermodus deaktivieren, um die zwischengespeicherte Version anzuzeigen.

Théorie des langages : Introduction à Lex (Flex) et Bison (Yacc)

Nous avons tout d'abord vu comment réaliser un microprocesseur élémentaire. Ensuite, nous lui avons fait exécuter quelques instructions simplement par l'ouverture ou la fermeture de circuits. Par après nous avons vu qu'il était possible de réaliser un langage machine, et nous avons vu un interpréteur de langage machine.

Enfin, nous avons vu une introduction aux langages de programmation, et les phases de la compilation.

Nous pouvons à présent mettre en pratique ces différentes notions, et réaliser notre propre compilateur. Pour les exemples qui vont suivre, le compilateur prendra en entrée du code LSD [Langage Simple et Didactique] pour une P-machine. La version utilisée est LSD010. Il s'agit d'un langage proche du C (bien que très simplifié), et comporte comme types scalaires des entiers et des booléens.

Lexique

L'analyse lexicale est la partie la plus facile à vérifier. Nous devons isoler les différents jetons, les symboles terminaux du code.

Comment allons-nous procéder ? Nous allons décrire dans un fichier quelles sont les suites de caractères que nous considérons comme étant des symboles terminaux. Ces suites de caractères ne sont pas toujours identiques pour un même symbole terminal, et nous avons la possibilité de définir quelles sont les expressions qui correspondent à ce symbole en utilisant les expressions rationnelles2.

Nous utiliserons Lex5 pour écrire notre spécification lexicale.

A chaque fois qu'un symbole terminal sera rencontré lors de l'analyse, nous sauverons ce dernier dans une table des symboles. Nous devrons aussi mémoriser d'autres informations, comme le type (dans le cas de notre langage simple, des entiers ou des booléens), l'endroit où se trouve cette variable en mémoire, etc.

Inhaltsverzeichnis Haut

Syntaxe

Nous utiliserons Bison ou YACC [“Yet Another Compiler Compiler”6] pour construire notre arbre syntaxique abstrait.

Comme l'arbre syntaxique abstrait mérite un peu plus d'explications, une page lui est consacrée plus loin.

Syntaxe et sémantique

Pour plus d'informations sur les différences entre la syntaxe et la sémantique, vous pouvez consulter la page d'introduction aux algorithmes.

Inhaltsverzeichnis Haut

Remarque : Ordre des pages et ordre des commandes

Nous verrons d'abord l'analyse lexicale avant l'analyse syntaxique. Cependant, comme nous utiliserons Lex et YACC, nous devrons veiller à introduire la commande yacc avant celle de lex.

Ordre de compilation...

Le fichier lex.yy est compilé avec la sortie de YACC. Comme nous déclarons généralement nos constantes dans le fichier YACC, nous devons traiter ce dernier avant le fichier Lex.

Code source du compilateur LSD010

Vous pouvez explorer et consulter la totalité du code source de l'exemple du compilateur LSD010 à cette adresse : https://www.gaudry.be/de/langages-lsd10-source.html

Deutsche Übersetzung

Sie haben gebeten, diese Seite auf Deutsch zu besuchen. Momentan ist nur die Oberfläche übersetzt, aber noch nicht der gesamte Inhalt.

Wenn Sie mir bei Übersetzungen helfen wollen, ist Ihr Beitrag willkommen. Alles, was Sie tun müssen, ist, sich auf der Website zu registrieren und mir eine Nachricht zu schicken, in der Sie gebeten werden, Sie der Gruppe der Übersetzer hinzuzufügen, die Ihnen die Möglichkeit gibt, die gewünschten Seiten zu übersetzen. Ein Link am Ende jeder übersetzten Seite zeigt an, dass Sie der Übersetzer sind und einen Link zu Ihrem Profil haben.

Vielen Dank im Voraus.

Dokument erstellt 29/01/2010, zuletzt geändert 28/10/2018
Quelle des gedruckten Dokuments:https://www.gaudry.be/de/langages-lex-yacc-intro.html

Die Infobro ist eine persönliche Seite, deren Inhalt in meiner alleinigen Verantwortung liegt. Der Text ist unter der CreativeCommons-Lizenz (BY-NC-SA) verfügbar. Weitere Informationen auf die Nutzungsbedingungen und dem Autor.

Aufzeichnungen

  1.  LSD : Langage Simple et Didactique Il existe une un certain nombre d'interprétations de l'acronyme LSD (Langage Symbolique Didactique, Langage Sans Difficulté, Langage Simple et Didactique), et vous pouvez aussi consulter le document en référenceref 2.

  2.  Expressions rationnelles : Le terme « expressions régulières » est souvent employé comme traduction textuelle de l'anglais “regular expressions”, mais nous devrions bien employer « expressions rationnelles ».

  3. a,b Gnu's Not Unix : entspricht « GNU n'est pas UNIX » en français

  4. a,b GNU : “Gnu's Not Unix” (en français, « GNU n'est pas UNIX ») Groupement de logiciels libres. Il s'agit d'un acronyme récursif, car nous retrouvons l'acronyme dans sa propre définition.

  5.  Lex : Nous emploierons le terme Lex pour désigner l'outil d'analyse lexicale, mais il peut s'agir de Flex, son équivalant GNU

  6. a,b,c,d,e Yet Another Compiler Compiler : entspricht « Encore un autre compilateur de compilateur » en français

  7. a,b,c,d YACC : “Yet Another Compiler Compiler” (en français, « Encore un autre compilateur de compilateur ») Nous emploierons le terme Yacc, mais il peut s'agir de Bison, son équivalant GNU

  8. a,b LSD010 : Langage Simple et Didactique Il existe une un certain nombre d'interprétations de l'acronyme LSD (Langage Symbolique Didactique, Langage Sans Difficulté, Langage Simple et Didactique). LSD010 est la version 2010 de la suite LSD80, LSD_02, LSD03, LSD04, LSD05, LSD06, LSD07, LSD08, et LSD09.

Inhaltsverzeichnis Haut

Referenzen

  1. Buch Sprache des Dokuments:fr IHDCB332 - Théorie des langages : Syntaxe et sémantique : PY Schobbens, Syntaxe et sémantique (January 2010)
  2. Zeigen Sie - html-Dokument Sprache des Dokuments:fr LSD : Yves Noyelle, La Saga du LSE et de sa famille (LSD/LSG/LST) (version 28/01/10)

Diese Verweise und Links verweisen auf Dokumente, die während des Schreibens dieser Seite konsultiert wurden, oder die zusätzliche Informationen liefern können, aber die Autoren dieser Quellen können nicht für den Inhalt dieser Seite verantwortlich gemacht werden.
Der Autor Diese Website ist allein dafür verantwortlich, wie die verschiedenen Konzepte und Freiheiten, die mit den Nachschlagewerken gemacht werden, hier dargestellt werden. Denken Sie daran, dass Sie mehrere Quellinformationen austauschen müssen, um das Risiko von Fehlern zu reduzieren.

Inhaltsverzeichnis Haut