home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume17 / pps / awk.l next >
Encoding:
Lex Description  |  1989-02-06  |  1.2 KB  |  81 lines

  1. %{
  2. #ifndef lint
  3. static char rcsid[] = "$Header: awk.l,v 0.0 88/06/22 05:21:58 on Rel $";
  4. #endif
  5. #include "pps.h"
  6. #include <ctype.h>
  7.  
  8. int nbrace;
  9. %}
  10. letter    [A-Za-z_]
  11. digit    [0-9]
  12. white    [ \t]
  13. %Start COMMENT STRING1 STRING2 KEYWORD
  14. %%
  15. <INITIAL>{letter}({letter}|{digit})*/{white}*:    {
  16.             funct(yytext);
  17.             REJECT;
  18.         }
  19. <INITIAL>{letter}({letter}|{digit})*    {
  20.             int kw = iskw(yytext);
  21.             if (kw)
  22.                 begin(KEYWORD);
  23.             ECHO;
  24.             if (kw)
  25.                 begin(INITIAL);
  26.         }
  27. <INITIAL>\"    { ECHO; begin(STRING1); }
  28. <STRING1>\\.    { ECHO; }
  29. <STRING1>\"    { begin(INITIAL); ECHO; }
  30. <INITIAL>~[ \t]*\/    { ECHO; begin(STRING2); }
  31. <INITIAL>^[ \t]*\/    {
  32.             if (!nbrace) {
  33.                 ECHO;
  34.                 begin(STRING2);
  35.             } else
  36.                 REJECT;
  37.         }
  38. <STRING2>\\.    { ECHO; }
  39. <STRING2>\/    { begin(INITIAL); ECHO; }
  40. <INITIAL>\{    { ECHO; nbrace++; }
  41. <INITIAL>\}    { ECHO; nbrace--; }
  42. <INITIAL>#.*    { begin(COMMENT); ECHO; begin(INITIAL); }
  43. [\t\n\f]+    { space(yytext); }
  44. .        { ECHO; }
  45. %%
  46. char *keywords[] = {
  47.     "",
  48.     "BEGIN",
  49.     "END",
  50.     "FILENAME",
  51.     "FS",
  52.     "NF",
  53.     "NR",
  54.     "OFMT",
  55.     "OFS",
  56.     "ORS",
  57.     "RS",
  58.     "break",
  59.     "continue",
  60.     "else",
  61.     "exit",
  62.     "exp",
  63.     "for",
  64.     "getline",
  65.     "if",
  66.     "in",
  67.     "int",
  68.     "index",
  69.     "length",
  70.     "log",
  71.     "next",
  72.     "print",
  73.     "printf",
  74.     "split",
  75.     "sprintf",
  76.     "sqrt",
  77.     "substr",
  78.     "while",
  79.     NULL
  80. };
  81.