0

C でレクサーをプログラミングしていて、ヘッダー ファイルについてどこかで読みましたtokens.h。そこにいますか?もしそうなら、その用途は何ですか?

4

2 に答える 2

1

tokens.hによって生成されたファイル、yaccまたはbison文法内のトークンのリストを含むファイルです。

/入力ファイルにはyaccbison次のようなトークン宣言が含まれている場合があります。

%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 に答える