home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!paladin.american.edu!darwin.sura.net!Sirius.dfn.de!mailgzrz.TU-Berlin.DE!cs.tu-berlin.de!news.netmbx.de!Germany.EU.net!horga!reswi!smart.bo.open.de!tom
- From: tom@smart.bo.open.de (Thomas Neumann)
- Newsgroups: de.comp.os.unix
- Subject: Re: lex: yywrap() ?
- Date: 30 Dec 1992 19:38:22 GMT
- Organization: News at smart
- Lines: 33
- Message-ID: <1hstreINNg2n@smart.bo.open.de>
- References: <C01B0C.B2n@malihh.hanse.de> <C01Dsw.CEw@malihh.hanse.de>
- NNTP-Posting-Host: smart.bo.open.de
- X-Newsreader: Emacs 18.59.1, GNUS 3.14.1
- In-reply-to: root@malihh.hanse.de's message of Tue, 29 Dec 1992 19:50:55 GMT
-
- >>>>> Regarding Re: lex: yywrap() ?; root@malihh.hanse.de (Carsten Lutz) adds:
-
- >Koennte mir bitte jemand kurz erklaeren, wozu die Funktion yywrap()
- >gut ist ( bzw. was sie tun soll ), die mein erzeugter lex-output gern
- >dazugelinkt haette ? Jetzt bitte kein RTFM, wenn ich ein FM haette,
- >wuerde ich's R'en.
-
- yywrap() wenn von lex aufgerufen, wenn der ``input stream'' zu ende ist.
- Du kannst in yywrap() dann z.B. eine weitere Datei oeffnen und lex
- weiter mit token versorgen. Wenn du lex signalisieren moechtest, dass
- wirklich Ende ist, dann muss yywrap() 1 zurueckliefern. In den allermeisten
- Faellen ist gilt also
-
- int yywrap() { return 1; }
-
- root> Und noch einen zu lex: Wie kann ich das gematchte pattern in
- root> der entsprechenden Action zuweisen ? Also so aehnlich wie
- root> folgendes:
-
- root> [a-zA-Z][a-zA-Z0-1]* { strcpy(yylval.string, MATCHEDPATTERN);
- root> return IDENTIFIER; }
-
- root> Naja, und in yylval.string soll sich danach dann das gefunden Pattern,
- root> in diesem Fall also der Name des Identifiers, befinden.
-
- Der Text, der die RE auf der linken Seite erfuellt hat befindet sich zur
- Ausfuehrung des Codes auf der rechten Seite immer in char yytext[], ist
- garanitiert mit '\0' abgeschlossen und die Laenge befindet sich in
- int yyleng .
-
- bye-- Thomas
- --
- die "Can't exec this .signature\n" unless $perl_is_installed;
-