我正在用C语言编写一个词法分析器,我在某处阅读了有关头文件tokens.h
的内容。它在那里吗?如果是这样,它的用途是什么?
答案 0 :(得分: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)
答案 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;}
%%