à quoi sert tokens.h quand je programme un lexer?
-
06-07-2019 - |
Question
Je programme un lexer en C et je lis quelque part le fichier d’entête tokens.h
. C'est ici? Si oui, à quoi sert-il?
La solution
tokens.h
est un fichier généré par yacc
ou bison
qui contient une liste de jetons appartenant à votre grammaire.
Votre fichier d'entrée yacc
/ bison
peut contenir des déclarations de jetons telles que:
%token INTEGER
%token ID
%token STRING
%token SPACE
L'exécution de ce fichier avec yacc
/ bison
donnera un fichier tokens.h
contenant les définitions de préprocesseur pour ces jetons:
/* Something like this... */
#define INTEGER (1)
#define ID (2)
#define STRING (3)
Autres conseils
Probablement, tokens.h
est un fichier généré par le générateur d'analyseur syntaxique (Yacc / Bison) contenant des définitions de jetons afin que vous puissiez renvoyer des jetons du lexer à l'analyseur.
Avec Lex / Flex et Yacc / Bison, cela fonctionne comme suit:
analyseur.y
:
%token FOO
%token BAR
%%
start: FOO BAR;
%%
lexer.l
:
%{
#include "tokens.h"
%}
%%
foo {return FOO;}
bar {return BAR;}
%%