我正在用 C 编写一个词法分析器,我在某处读到了有关头文件的信息tokens.h
。它在那里吗?如果是这样,它的用途是什么?
问问题
1001 次
2 回答
1
tokens.h
是由语法中的标记列表生成yacc
或bison
包含的文件。
您的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 回答