0

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

4

2 回答 2

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)
于 2009-07-31T15:26:12.473 回答
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;}

%%
于 2009-07-31T15:35:16.250 回答