o que é o uso de tokens.h quando estou programando um lexer?
-
06-07-2019 - |
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?
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