Je suis en train de programmer un lexer en C et j'ai lu quelque part au sujet du fichier d'en-tête tokens.h
. C'est ici? Si oui, quelle est son utilisation?à quoi sert tokens.h quand je programme une lexer?
0
A
Répondre
1
tokens.h
est un fichier généré par ou bison
qui contient une liste de jetons dans votre grammaire.
Votre fichier d'entrée yacc
/bison
peut contenir des déclarations symboliques comme:
%token INTEGER
%token ID
%token STRING
%token SPACE
L'exécution de ce fichier par yacc
/bison
se traduira par un fichier tokens.h
qui contient les définitions de préprocesseur pour ces jetons:
/* Something like this... */
#define INTEGER (1)
#define ID (2)
#define STRING (3)
0
Probablement, tokens.h
est un fichier généré par le générateur d'analyseur syntaxique (Yacc/Bison) contenant des définitions de jeton de sorte que vous pouvez retourner tok ens du lexer à l'analyseur.
Avec Lex/Flex et Yacc/Bison, il fonctionne comme ceci:
parser.y
:
%token FOO
%token BAR
%%
start: FOO BAR;
%%
lexer.l
:
%{
#include "tokens.h"
%}
%%
foo {return FOO;}
bar {return BAR;}
%%
alors comment suis-je censé l'utiliser .. Avez-vous des liens? – Hick
Utilisez-vous flex? –
non je ne suis pas. Je programme ma propre lex. pouvez-vous recommander des livres à ce sujet? – Hick