Hallo!
Ich schreibe einen Parser in dem ich auch Klassen verwenden will. Das heißt ich kompiliere ihn als C++-Code, nicht als C.
Auszug aus dem Makefile:
all:
lex -o scanner.c scanner.lex
gcc -o scanner.o -c scanner.c
yacc -d -o parser.cpp parser.ypp
gcc -c -o parser.o parser.cpp
gcc -o parser scanner.o parser.o -ll
In der letzten Zeile, also beim Linken von Scanner und Parser (Der Scanner ist in C geschrieben) erhalte ich nun den Fehler: "parser.cpp:1252: Fehler: »yylex« wurde in diesem Gültigkeitsbereich nicht definiert". Anscheinend geht beim Zusammenfügen von C und C++ was schief.
Wenn ich für den Scanner auch C++-Code erzeugen lasse (Option -c++ von lex), dann geht es erst recht nicht, weil er mir dann keine globale yylex erzeugt, sondern eine Klasse.
Wenn ich alles auf C umstelle, dann geht es übrigens, nur kann ich dann natürlich im Parser keine Klassen verwenden.
Hat jemand einen Tipp wie ich das Problem lösen könnte?