suivant: Analyse syntaxique
monter: Le compilateur
précédent: Le compilateur
  Table des matières
Le flux d'entrée saisi par l'utilisateur se présente sous la forme d'une suite de caractères. Celle-ci
est inutilisable en l'état pour produire les structures de données nécessaires à l'interpréteur. Il faut
d'abord la transformer en une suite d'unités lexicales, les lexèmes (ou "tokens" en anglais), dont on
sera ensuite plus à même de faire une analyse syntaxique selon la grammaire du langage.
L'analyse lexicale doit notamment supprimer tous les caractères de séparation que sont les
espaces, les tabulations et les sauts de lignes. En effet, aucun de ceux-ci n'est nécessaire pour écrire
des règles ou des questions ; ils permettent uniquement de rendre plus intelligible le code de
l'utilisateur. Les commentaires sont également supprimés. Un commentaire est une suite de
caractères quelconques qui commence par deux tirets consécutifs, et qui s'étend jusqu'au
saut de ligne suivant.
Les caractères restants sont transformés en lexèmes. Pour toute suite de caractères
alphanumériques, on obtient un lexème de type SYMBOLE. Contrairement à de nombreux
langages de programmation (langages Ada et C, d'autres mises en
uvre de Prolog), un tel
symbole peut débuter par un chiffre, et même n'être composé que de chiffres. Quoi qu'il en soit, il
n'aura jamais la valeur d'un nombre, cette notion n'existant strictement pas dans notre langage.
S'il sont consécutifs (non séparés, même par une espace), les caractères "-" et ">" sont traduits
en un seul lexème de type FLECHE. Tous les autres caractères constituent un lexème à part
entière. On notera qu'un type de lexème est en fait un entier positif, et que pour les caractères seuls
il s'agit de leur code ASCII.
L'analyseur lexical est obtenu à l'aide de l'outil Lex. Ce dernier génère du code C qu'il suffit
ensuite de compiler normalement et de lier avec les autres modules. Notre but n'étant pas de
décrire le fonctionnement de Lex, nous dirons simplement qu'il prend en entrée un fichier contenant un
ensemble de motifs auxquels sont associés des actions, écrites en langage C. Celles-ci permettent
justement d'ignorer certains caractères et de générer des lexèmes. Pour plus de détails, on se
reportera au fichier gloorp.y fourni en annexe.
suivant: Analyse syntaxique
monter: Le compilateur
précédent: Le compilateur
  Table des matières
Alexandre DAGAN
2000-07-07