当我编写词法分析器时,tokens.h有什么用?

时间:2009-07-31 15:24:28

标签: c bison flex-lexer lexical-analysis

我正在用C语言编写一个词法分析器,我在某处阅读了有关头文件tokens.h的内容。它在那里吗?如果是这样,它的用途是什么?

2 个答案:

答案 0 :(得分:1)

tokens.h是由yaccbison生成的文件,其中包含语法中的标记列表。

您的yacc / bison输入文件可能包含令牌声明,如:

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

通过yacc / bison运行此文件将生成一个tokens.h文件,其中包含这些令牌的预处理程序定义:

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

答案 1 :(得分:0)

可能tokens.h是由包含令牌定义的解析器生成器(Yacc / Bison)生成的文件,因此您可以将词典从词法分析器返回到解析器。

使用Lex / Flex和Yacc / Bison,它的工作原理如下:

parser.y

%token FOO
%token BAR

%%

start: FOO BAR;

%%

lexer.l

%{
#include "tokens.h"
%}

%%

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

%%