字句解析器をプログラミングするとき、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