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?

Était-ce utile?

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;}

%%
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top