Frage

Wenn ich versuche, die Ausgabe dieses trivialen lex Programms zu kompilieren:

# lex.l
integer   printf("found keyword INT");

mit:

$ gcc lex.yy.c

ich:

Undefined symbols:
  "_yywrap", referenced from:
      _yylex in ccMsRtp7.o
      _input in ccMsRtp7.o
  "_main", referenced from:
      start in crt1.10.6.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

lex --Version sagt mir, ich verwende eigentlich ‚flex 2.5.35‘ obwohl ls -fla `die lex` kein symbolischer Link ist. Irgendwelche Ideen, warum der Ausgang wird nicht kompiliert?

War es hilfreich?

Lösung

Flex Handbuch

  

ich einen Fehler zu undefiniert yywrap get ().

     

Sie müssen eine yywrap () Funktion des eigenen liefern, oder einen Link zu libfl.a (die man zur Verfügung stellt) oder die Verwendung

%option noyywrap
     

in Ihrer Quelle zu sagen, dass Sie nicht über eine yywrap () -Funktion werden sollen.

auch:

  

Wenn der Scanner empfängt ein   End-of-Datei Anzeige von          YY_INPUT, überprüft er dann die yywrap () Funktion. Ob          yywrap () gibt falsch (Null) ist, dann wird angenommen, dass die          Funktion hat vor und yyin Punkt einzurichten gegangen          eine andere Eingabedatei, und das Scannen wird fortgesetzt. Wenn es zurückgibt          true (nicht Null), dann wird der Scanner endet, Return 0          an seinen Aufrufer. Beachten Sie, dass in jedem Fall der Start Bedin-          tion bleibt unverändert; es zufällt nicht INITIAL.

Andere Tipps

Antwort Wie Elis schon sagt, das ist kein triviales lex Programm. Es ist eine triviale lex Datei , und damit ein Teil eines Programms, aber es (wie jede lex-Datei) muss mit etwas C-Code kombiniert werden, um ein komplettes Programm zu machen. Insbesondere müssen Sie noch eine main Funktion (die Sie in C oder C ++ oder etwas schreiben, in einer separaten Datei), und Sie werden auch eine yywrap Funktion, die die Schnittstelle zwischen dem lex Code bereitstellt und dem Rest Ihres C schreiben müssen Code.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top