Ich programmiere einen Lexer in C und ich las irgendwo über die Header-Datei tokens.h
. Ist es da? Wenn ja, was nützt es?Was ist die Verwendung von tokens.h, wenn ich einen Lexer programmiere?
0
A
Antwort
1
tokens.h
ist eine Datei, die von yacc
oder bison
generiert wird und eine Liste von Tokens in Ihrer Grammatik enthält.
%token INTEGER
%token ID
%token STRING
%token SPACE
Ausführen dieser Datei durch yacc
/bison
führt in einer tokens.h
-Datei, die Präprozessordefinitionen für diese Token enthält:
/* Something like this... */
#define INTEGER (1)
#define ID (2)
#define STRING (3)
0
Ihre yacc
/bison
Eingabedatei Token Erklärungen dergleichen enthalten
Wahrscheinlich ist tokens.h
eine Datei, die vom Parser-Generator (Yacc/Bison) generiert wird und Token-Definitionen enthält, damit Sie Tok zurückgeben können ens vom Lexer zum Parser.
Mit Lex/Flex und Yacc/Bison, funktioniert es wie folgt aus:
parser.y
:
%token FOO
%token BAR
%%
start: FOO BAR;
%%
lexer.l
:
%{
#include "tokens.h"
%}
%%
foo {return FOO;}
bar {return BAR;}
%%
so, wie ich es benutzt werde soll .. Hast du irgendwelche Links? – Hick
Verwenden Sie Flex? –
Nein, ich bin nicht. Ich programmiere mein eigenes Lex. Kannst du ein paar Bücher dazu empfehlen? – Hick