Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » GNU/Linux » lex?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
31.10.2003, 14:52 Uhr
Pablo
Supertux
(Operator)


Ich hab in der HP von @mike ein Beispiel für lex runtergeladen.

Was ist denn überhaupt lex? Wieso erzeugt lex eine .c Datei, die ich in C kompilieren kann? Offenbar ist die .l Datei sehr C ähnlich, aber was ist der Sinn der Sache?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
31.10.2003, 14:54 Uhr
typecast
aka loddab
(Operator)


Tipp mal

Code:
$ man lex



ein. Wenn die man-Page bei dir nicht vorhanden ist, dann poste ich sie dir gern.
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
31.10.2003, 14:55 Uhr
typecast
aka loddab
(Operator)


Auch wenn sie etwas länger ist....
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
31.10.2003, 15:02 Uhr
Pablo
Supertux
(Operator)


Ich weiß, dass sie es gibt, ich wollte nur eine schnlle On-the-fly Antwort, da ich keine Zeit mehr hab und noch nicht zu Hause bin und deshalb keinen Bock mir die ganze Man-Page zu ziehen. Aber was soll's, ich prädige auch immer wieder, man solle die man-pages lesen, und das betrifft micht jetzt auch, hätte ich mir denken können, dass ich eine solche Antwort bekomme.


Bearbeitung:
Nur ne Frage: Sind lex und flex die selben Programmen? Weil sont hätte ich flex gemeint

--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 31.10.2003 um 15:09 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
31.10.2003, 15:12 Uhr
typecast
aka loddab
(Operator)


Leider kan nich dir nicht mehr sagen, als schau in die man-page, da ich mit dem Programm nie geearbeitet habe.

Ich würde jetzt mal tippen, dass flex der Nachfolger von lex ist. Sicher bin ich mir aber nicht.
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
31.10.2003, 15:40 Uhr
virtual
Sexiest Bit alive
(Operator)


Ja flex ist der Nachfolger von lex.
Generell kann man sagen, daß (f)lex dazu dient, Texte zu analysieren. er erwartet eine eingabedatei (.l) aus der er dann fertigen C Code (oder C++ Code, kann man einstellen) generiert, das kann man dann wiederum kompilieren. Der Generierte Code erlaubt die analyse von Texten gemäß den in der .l Datei festgelegten Regeln. Sehr häufig wird der Flex dazu eingesetzt, um einen einfachen ASCII Text in Tokens zu zerlegen. Die generierten Tokens werden dann zB von bison (yacc) generierten Compilern gelesen und ausgewertet.
Mit dem Paar flex/bison kann man also Interpreter/Compiler bauen. Ein Beispiel findet sich hier, wo ich mal einen einfachen Interpreter für mathe. Ausdrücke geschrieben habe.
Der Zusammenhang der einzelnen komponenten ist eigentlich folgender:
Die .l Datei enthält, nachdem flex seine Arbeit getan hat, neben dem main (was ja schon davor da war) eine funktion yylex. yylex gibt irgendwelche Zahlen zurück, die die einzelnen Tokens definieren (TOKEN_xxx). Die .y Datei wird vom bison bearbeitet und generiert eine yyparse Routine. Nun main ruft yyparse auf. Diese yyparseRoutine enthält den eigentlichen Interpreter. Der Interpreter ruft wiederum yylex auf, um an die Tokens zu kommen.

An obigen Link sieht man auch den vorteil: der Code ist zwar auf mehrere Dateien verteilt, aber kürzer als der in post 001 und ist ihm auch hinsichtlich funktionalität deutlich überlegen.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 31.10.2003 um 15:43 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ GNU/Linux ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: