home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #31 / NN_1992_31.iso / spool / de / comp / os / unix / 2566 < prev    next >
Encoding:
Internet Message Format  |  1992-12-31  |  1.9 KB

  1. 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
  2. From: tom@smart.bo.open.de (Thomas Neumann)
  3. Newsgroups: de.comp.os.unix
  4. Subject: Re: lex: yywrap() ?
  5. Date: 30 Dec 1992 19:38:22 GMT
  6. Organization: News at smart
  7. Lines: 33
  8. Message-ID: <1hstreINNg2n@smart.bo.open.de>
  9. References: <C01B0C.B2n@malihh.hanse.de> <C01Dsw.CEw@malihh.hanse.de>
  10. NNTP-Posting-Host: smart.bo.open.de
  11. X-Newsreader: Emacs 18.59.1, GNUS 3.14.1
  12. In-reply-to: root@malihh.hanse.de's message of Tue, 29 Dec 1992 19:50:55 GMT
  13.  
  14. >>>>> Regarding Re: lex: yywrap() ?; root@malihh.hanse.de (Carsten Lutz) adds:
  15.  
  16. >Koennte mir bitte jemand kurz erklaeren, wozu die Funktion yywrap()
  17. >gut ist ( bzw. was sie tun soll ), die mein erzeugter lex-output gern
  18. >dazugelinkt haette ? Jetzt bitte kein RTFM, wenn ich ein FM haette,
  19. >wuerde ich's R'en.
  20.  
  21. yywrap() wenn von lex aufgerufen, wenn der ``input stream'' zu ende ist.
  22. Du kannst in yywrap() dann z.B. eine weitere Datei oeffnen und lex
  23. weiter mit token versorgen. Wenn du lex signalisieren moechtest, dass
  24. wirklich Ende ist, dann muss yywrap() 1 zurueckliefern. In den allermeisten
  25. Faellen ist gilt also  
  26.  
  27.     int yywrap() { return 1; }
  28.  
  29.   root> Und noch einen zu lex: Wie kann ich das gematchte pattern in
  30.   root> der entsprechenden Action zuweisen ?  Also so aehnlich wie
  31.   root> folgendes:
  32.  
  33.   root> [a-zA-Z][a-zA-Z0-1]*    { strcpy(yylval.string, MATCHEDPATTERN);
  34.   root>               return IDENTIFIER; }
  35.  
  36.   root> Naja, und in yylval.string soll sich danach dann das gefunden Pattern,
  37.   root> in diesem Fall also der Name des Identifiers, befinden.
  38.  
  39. Der Text, der die RE auf der linken Seite erfuellt hat befindet sich zur
  40. Ausfuehrung des Codes auf der rechten Seite immer in char yytext[], ist
  41. garanitiert mit '\0' abgeschlossen und die Laenge befindet sich in
  42. int yyleng .
  43.  
  44. bye-- Thomas
  45. --
  46. die "Can't exec this .signature\n" unless $perl_is_installed;
  47.