Pergunta

Eu estou programando um lexer em C e eu li em algum lugar sobre o tokens.h arquivo de cabeçalho. Está lá? Se sim, qual é o seu uso?

Foi útil?

Solução

tokens.h é um arquivo gerado pelo yacc ou bison que contém uma lista de tokens dentro de sua gramática.

Seu arquivo de entrada yacc / bison pode conter declarações de token como:

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

A execução deste arquivo através yacc / bison irá resultar em um arquivo tokens.h que contém definições de pré-processador para esses tokens:

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

Outras dicas

Provavelmente, tokens.h é um arquivo gerado pelo gerador de analisador (Yacc / Bison) contendo definições de token que você possa retornar fichas do lexer para o analisador.

Com Lex / Flex e Yacc / Bison, funciona assim:

parser.y:

%token FOO
%token BAR

%%

start: FOO BAR;

%%

lexer.l:

%{
#include "tokens.h"
%}

%%

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

%%
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top