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

有帮助吗?

解决方案

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)

其他提示

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;}

%%
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top