
Envoyé par
leternel
Je ne peux pas ouvrir ton document, mais ta question est plus fondamentale.
Un analyseur syntaxique est un (morceau d'un) programme qui lit un fichier texte, telle qu'un .c ou un .xml, et en fait deux choses.
La première est de vérifier que le contenu est une suite valide de caractères, c'est à dire que chaque mot ou signe du fichier est acceptable (par exemple, dans le cas du c, a@2 n'est pas valide)
Une fois cette étape terminée, on a une suite de "tokens", c'est à dire de mots avec une première idée de ce dont il s'agit (identifier, symbole, constante numérique, constante de texte).
Ainsi, int i = 2; n'est plus la suite de dix caractères arbitraires (i, n, t, ...) mais de mots du langage: identifier:int, identifier:i, operator:=, integer:2, symbole:;
Ce travail terminé, l'analyseur vérifie que la syntaxe de cette chaine est correcte.
c'est à dire qu'il respecte un certain nombre de règle qui définissent la syntaxe.
La suite du travail sera probablement de constituer un "arbre syntaxique abstrait" (ou abstract syntaxic tree noté AST). Mais ca n'est plus forcément l'analyse syntaxique.
Dans la phase suivante de la compilation, l'analyse sémantique, cet arbre permettra de vérifier le sens du code, en cherchant par exemple si une variable n'est pas définie à temps.
Puis par la suite, il permettra de faire un certain nombre de préoptimisation, avant de compiler effectivement.
En général, pour tester l'analyse syntaxique, on réalise un programme qui lit un code source, le vérifie, et le réécrit en faisant une belle indentation.
Partager