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?

War es hilfreich?

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
scroll top