Domanda

Sto programmando un lexer in C e ho letto da qualche parte sul file di intestazione tokens.h . È qui? In tal caso, a che cosa serve?

È stato utile?

Soluzione

tokens.h è un file generato da yacc o bison che contiene un elenco di token all'interno della tua grammatica.

Il tuo file di input yacc / bison può contenere dichiarazioni di token come:

%token INTEGER
%token ID
%token STRING
%token SPACE

L'esecuzione di questo file tramite yacc / bison comporterà un file tokens.h che contiene le definizioni del preprocessore per questi token:

/* Something like this... */
#define INTEGER (1)
#define ID      (2)
#define STRING  (3)

Altri suggerimenti

Probabilmente, tokens.h è un file generato dal generatore di parser (Yacc / Bison) contenente definizioni di token in modo da poter restituire token dal lexer al parser.

Con Lex / Flex e Yacc / Bison, funziona così:

parser.y :

%token FOO
%token BAR

%%

start: FOO BAR;

%%

lexer.l :

%{
#include "tokens.h"
%}

%%

foo {return FOO;}
bar {return BAR;}

%%
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top