was ist die Verwendung von tokens.h, wenn ich ein Lexer bin Programmierung?
-
06-07-2019 - |
Frage
Ich programmiere ein Lexer in C und ich habe irgendwo gelesen, über die Header-Datei tokens.h
. Ist es da? Wenn ja, was ist der Einsatz?
Lösung
tokens.h
ist eine Datei von yacc
oder bison
erzeugt, die eine Liste von Token in Ihrer Grammatik enthält.
Ihre yacc
/ bison
Eingabedatei enthalten Token Erklärungen wie:
%token INTEGER
%token ID
%token STRING
%token SPACE
Ausführen dieser Datei durch yacc
/ bison
in einer tokens.h
Datei führen, die Präprozessordefinitionen für diese Token enthält:
/* Something like this... */
#define INTEGER (1)
#define ID (2)
#define STRING (3)
Andere Tipps
Wahrscheinlich tokens.h
ist eine Datei, die vom Parser-Generator (Yacc / Bison), die Token-Definitionen erzeugt, so dass Sie Token aus dem Lexer an den Parser zurückgeben können.
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;}
%%
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow