home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume17 / pps / csh.l < prev    next >
Text File  |  1989-02-06  |  2KB  |  99 lines

  1. %{
  2. #ifndef lint
  3. static char rcsid[] = "$Header: csh.l,v 0.0 88/06/22 05:22:04 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. builtin    [\$\<\*0-9]
  14. %Start COMMENT STRING1 STRING2 KEYWORD
  15. %%
  16. <INITIAL>{letter}({letter}|{digit})*/{white}*:    {
  17.             funct(yytext);
  18.             REJECT;
  19.         }
  20. <INITIAL>{letter}({letter}|{digit})*    {
  21.             int kw = iskw(yytext);
  22.             if (kw)
  23.                 begin(KEYWORD);
  24.             ECHO;
  25.             if (kw)
  26.                 begin(INITIAL);
  27.         }
  28. <INITIAL>\"    { begin(STRING1); ECHO; }
  29. <INITIAL>\'    { begin(STRING2); ECHO; }
  30. <INITIAL>#.*    { begin(COMMENT); ECHO; begin(INITIAL); }
  31. <STRING1>\\.    { ECHO; }
  32. <STRING2>\\.    { ECHO; }
  33. <STRING1>\"    { ECHO; begin(INITIAL); }
  34. <STRING2>\'    { ECHO; begin(INITIAL); }
  35. <INITIAL>\${builtin}    { begin(KEYWORD); ECHO; begin(INITIAL); }
  36. <STRING1>\${builtin}    { begin(KEYWORD); ECHO; begin(STRING1); }
  37. <INITIAL>\$    { begin(KEYWORD); ECHO; begin(INITIAL); }
  38. <STRING1>\$    { begin(KEYWORD); ECHO; begin(STRING1); }
  39. [\t\n\f]+    { space(yytext); }
  40. .        { ECHO; }
  41. %%
  42. char *keywords[] = {
  43.     "",
  44.     "alias",
  45.     "alloc",
  46.     "break",
  47.     "breaksw",
  48.     "case",
  49.     "cd",
  50.     "chdir",
  51.     "continue",
  52.     "default",
  53.     "echo",
  54.     "else",
  55.     "end",
  56.     "endif",
  57.     "endsw",
  58.     "exec",
  59.     "exit",
  60.     "foreach",
  61.     "glob",
  62.     "goto",
  63.     "history",
  64.     "if",
  65.     "logout",
  66.     "nice",
  67.     "nohup",
  68.     "onintr",
  69.     "repeat",
  70.     "set",
  71.     "setenv",
  72.     "shift",
  73.     "source",
  74.     "switch",
  75.     "then",
  76.     "time",
  77.     "while",
  78.     "umask",
  79.     "unalias",
  80.     "unset",
  81.     "wait",
  82.     "while",
  83.     "@",
  84.     "env",
  85.     "argv",
  86.     "child",
  87.     "home",
  88.     "ignoreeof",
  89.     "noclobber",
  90.     "noglob",
  91.     "nomatch",
  92.     "path",
  93.     "prompt",
  94.     "shell",
  95.     "status",
  96.     "verbose",
  97.     NULL
  98. };
  99.