Probleme mit lex

  1. odif

    odif Thread StarterMacUser Mitglied

    Mitglied seit:
    14.07.2005
    Beiträge:
    412
    Zustimmungen:
    1
    Hi,

    ich bin gerade dabei, mich in lex einzuarbeiten, habe aber gleich zu Beginn ein Problemm. Meine lex-Datei test.l sieht wir folgt aus:
    Code:
    %% 
    
    .
    \n
    
    %% 
    Diese Datei lasse ich mittels lex test.l durch lex laufen. Herauskommt lex.yy.c. Diese will ich nun mit gcc kompilieren (Befehl: gcc lex.yy.c). Dabei treten jedoch sehr viele Fehler auf.
    Hauptsächlich Fehler der folgenden Form:
    Code:
     
    
    lex.yy.c:640: error: dereferencing pointer to incomplete type
    lex.yy.c:228: error: parse error before '*' token
    lex.yy.c:530: error: 'stdin' undeclared (first use in this function)
    lex.yy.c:530: error: (Each undeclared identifier is reported only once
    lex.yy.c:530: error: for each function it appears in.)
    lex.yy.c:533: error: 'stdout' undeclared (first use in this function)
    lex.yy.c: In function 'yy_scan_bytes':
    lex.yy.c:1328: error: dereferencing pointer to incomplete type
    lex.yy.c: In function 'yy_fatal_error':
    lex.yy.c:1398: warning: incompatible implicit declaration of built-in function 'fprintf'
    lex.yy.c:1398: error: 'stderr' undeclared (first use in this function)
    lex.yy.c:1399: warning: incompatible implicit declaration of built-in function 'exit'
    lex.yy.c: In function 'yy_flex_alloc':
    lex.yy.c:1462: warning: incompatible implicit declaration of built-in function 'malloc' 
    Was nun zu tun?

    Grüße
    odif
     
    odif, 22.01.2006
  2. der_Kay

    der_KayMacUser Mitglied

    Mitglied seit:
    02.09.2004
    Beiträge:
    1.685
    Zustimmungen:
    8
    Bist Du sicher, dass Du da nicht einem Uralt-Tutorial erlegen bist? Den alten "lex" hat man schon lange gegen flex ausgetauscht und der taucht immer im Zusammenspiel mit bison (ehemals yacc) auf.
    Übersetz` mal mit:
    Code:
    flex test.l
    gcc lex.yy.c -lfl
    
    libflex ist die Standard-(F)Lex(er)-Bibliothek. Das kompiliert dann. Aber das war dann auch schon alles... Wenn es unbedingt lex sein muss:
    Code:
    lex test.l
    gcc lex.yy.c -ll
    
    Das hier find ich sehr informativ: Lex and YACC primer/HOWTO
     
    der_Kay, 22.01.2006
  3. rash65

    rash65unregistriert

    Mitglied seit:
    27.10.2004
    Beiträge:
    111
    Zustimmungen:
    0
    Wie wärs du schaust einfach mal in lex.yy.c ? Zum Beispiel die Probleme von wegen stdin und stdout sollten doch relativ einfach zu lösen sein?! Allerdings glaube ich nicht, dass irgendeine Version von lex solche Fehler produzieren sollte. Probier doch mal die zweiten %% wegzulassen, da du ja eh keine Subroutinen benutzt.
    Und falls du kein C kannst probier doch lieber den Einstieg mit JLex (http://www.cs.princeton.edu/~appel/modern/java/JLex/) das ist genau die gleiche Syntax, es wird allerdings Java Code erzeugt. Zum Parserbauen kannst du dann BYacc/J benutzen.
     
    rash65, 22.01.2006
  4. odif

    odif Thread StarterMacUser Mitglied

    Mitglied seit:
    14.07.2005
    Beiträge:
    412
    Zustimmungen:
    1
    Beides hat nicht funktioniert. Es kommen in beiden Fällen die oben genannten Fehlermeldungen.

    Das zweite %% gehört zu der Syntax.

    Ich habe jetzt auch weitere Lex-Dateien ausprobiert , es kommt immer derselbe Mist.


    Und Danke für den Hinweis auf JLex. Ich werde es mir mal anschauen.
    odif
     
    odif, 22.01.2006
  5. odif

    odif Thread StarterMacUser Mitglied

    Mitglied seit:
    14.07.2005
    Beiträge:
    412
    Zustimmungen:
    1
    Der Fehler war sehr simpel.

    Ich habe den Mac OS X SDK nicht installiert, sondern gedacht, dass der Compiler alleine reicht.

    odif
     
    odif, 23.01.2006
Die Seite wird geladen...
Ähnliche Themen - Probleme lex
  1. EstherWINF
    Antworten:
    5
    Aufrufe:
    586
    EstherWINF
    23.11.2016
  2. stefan19773
    Antworten:
    4
    Aufrufe:
    1.492
    stefan19773
    25.03.2014
  3. Herr Patschulke
    Antworten:
    7
    Aufrufe:
    1.476
    Herr Patschulke
    14.12.2013
  4. kuegelidoc
    Antworten:
    4
    Aufrufe:
    1.073