Création d'un analyseur syntaxique avec le programme yacc

Le programme yacc crée des analyseurs syntaxiques qui définissent et appliquent la structure d'entrée de caractères à un programme informatique.

Pour utiliser ce programme, vous devez fournir les entrées suivantes:
fichier de règles grammaticales
Fichier source contenant les spécifications de la langue à reconnaître. Ce fichier contient également les sous-routines main, yyerroret yylex . Vous devez fournir ces sous-routines.
principal
Une sous-routine de langage C qui, au minimum, contient un appel à la sous-routine yyparse générée par le programme yacc . Une forme limitée de cette sous-routine est disponible dans la bibliothèque yacc .
erreur yyerror
Sous-routine de langage C permettant de gérer les erreurs pouvant se produire lors de l'opération de l'analyseur syntaxique. Une forme limitée de cette sous-routine est disponible dans la bibliothèque yacc .
yylex
Sous-routine de langage C permettant d'effectuer une analyse lexicale sur le flux d'entrée et de transmettre des jetons à l'analyseur syntaxique. Vous pouvez utiliser la commande lex pour générer cette sous-routine d'analyseur lexical.

Lorsque la commande yacc obtient une spécification, elle génère un fichier de fonctions de langage C appelé y.tab.c. Lorsqu'elles sont compilées à l'aide de la commande cc , ces fonctions forment la sous-routine yyparse et renvoient un entier. Lorsqu'elle est appelée, la sous-routine yyparse appelle la sous-routine yylex pour obtenir des jetons d'entrée. La sous-routine yylex continue de fournir une entrée jusqu'à ce que l'analyseur détecte une erreur ou que la sous-routine yylex renvoie un jeton de marqueur de fin pour indiquer la fin de l'opération. Si une erreur se produit et que la sous-routine yyparse ne peut pas récupérer, elle renvoie la valeur 1 à la sous-routine main . S'il trouve le jeton de marqueur de fin, la sous-routine yyparse renvoie la valeur 0 à la sous-routine main .