2016-12-09 4 views
0

mache Ich versuche, eine Karte zu machen, die in Flex und Bison zusammen verwendet werden kann.Wie man globale Parameter in Bison C++

Dies ist, was ich versuchte, in Bison setzen:

%{ 
    #include<string> 
    #include<string.h> 
    #include<map> 
    using namespace std; 
    map<string,int> vars; 
%} 

und meine flex umfasst dies:

%{ 
#include "ex3.tab.h" 
#include<stdio.h> 
#include<string> 
%} 

Ich erhalte die Fehlermeldung " 'vars' wurde in diesem Rahmen nicht erklärt", wenn ich Versuchen Sie, von flex auf vars zuzugreifen.

Ich weiß, es ist nur eine einfache Syntax Frage, aber ich konnte nirgendwo ein Beispiel dafür finden.

Antwort

1

Sie erhalten den Fehler, weil die Variablendeklaration für vars nicht in der Bison-generierten Headerdatei ist. Sie müssen in Ihrer Flex-Datei selbst eine extern Deklaration hinzufügen.