Nous réaliserons également plusieurs exercices dont l'installation de ANTLR pour Eclipse, l'écriture d'un lexer, d'une grammaire simple.

Objectifs

Les objectifs du chapitre sont :

  • Comprendre le fonctionnement global d'un compilateur
  • Comprendre la notion de token, d'arbre syntaxique
  • Comprendre les étapes nécessaires à la construction d'un parseur

Ce chapitre expose églament des termes improtantes :

Langue : Une langue est un ensemble de phrases valides ; les phrases sont composées d'expressions, qui sont composées de sous-phrases, et ainsi de suite.

Grammaire : Une grammaire définit formellement les règles syntaxiques d'un langage. Chaque règle d'une une grammaire exprime la structure d'une sous-phrase. Arbre syntaxique ou arbre d'analyse : Il représente la structure de la phrase où chaque racine de sous-arbre donne un nom abstrait. racine du sous-arbre donne un nom abstrait aux éléments qui se trouvent sous elle. Les racines des sous-arbres correspondent aux noms des règles de grammaire. Les feuilles de l'arbre sont des symboles ou des tokens de la phrase.

Token ou lexème : Un token est un symbole de vocabulaire dans une langue ; il peut représenter une catégorie de symboles tels que "identificateur" ou une catégorie d'éléments. de symboles tels que "identificateur" ou représenter un seul opérateur ou mot-clé.

Lexer ou tokenizer : Il décompose un flux de caractères d'entrée en tokens. Un lexeur effectue une analyse lexicale.

Analyseur syntaxique : Un analyseur syntaxique vérifie l'appartenance des phrases à un langage spécifique en comparant la structure de la phrase à des règles. en vérifiant la structure de la phrase par rapport aux règles d'une grammaire. La meilleure analogie pour l'analyse syntaxique est la traversée d'un labyrinthe, en comparant les mots d'une phrase aux mots écrits le long du sol pour aller de l'entrée à la sortie. ANTLR génère des analyseurs descendants appelés ALL(*) qui peuvent utiliser tous les symboles d'entrée restants pour prendre des décisions. Les analyseurs top- Les analyseurs descendants sont orientés vers un but et commencent à correspondre à la règle associée à la construction la plus grossière, telle que program ou inputFile.

Analyseur ascendant récursif: Il s'agit d'un type spécifique d'analyseur descendant implémenté avec une fonction pour chaque règle dans la base de données. avec une fonction pour chaque règle de la grammaire.

Lookahead : Les analyseurs utilisent le lookahead pour prendre des décisions en comparant les symboles qui commencent chaque alternative. qui commencent chaque alternative.

Resources