Pregunta

Estoy programando un lexer en C y leí en alguna parte sobre el archivo de encabezado tokens.h . ¿Está ahí? Si es así, ¿para qué sirve?

¿Fue útil?

Solución

tokens.h es un archivo generado por yacc o bison que contiene una lista de tokens dentro de su gramática.

Su archivo de entrada yacc / bison puede contener declaraciones de token como:

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

Ejecutar este archivo a través de yacc / bison dará como resultado un archivo tokens.h que contiene definiciones de preprocesador para estos tokens:

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

Otros consejos

Probablemente, tokens.h es un archivo generado por el generador de analizadores (Yacc / Bison) que contiene definiciones de tokens para que pueda devolver los tokens del lexer al analizador.

Con Lex / Flex y Yacc / Bison, funciona así:

parser.y :

%token FOO
%token BAR

%%

start: FOO BAR;

%%

lexer.l :

%{
#include "tokens.h"
%}

%%

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

%%
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top