当我编写词法分析器时,tokens.h有什么用?
-
06-07-2019 - |
题
我正在用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;}
%%
不隶属于 StackOverflow