home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d1xx / d167 / cdecl.lha / CDecl / cdlex.l < prev    next >
Text File  |  1988-11-22  |  2KB  |  76 lines

  1. %{
  2. /* Lexical analyzer description for ANSI and C++ cdecl. */
  3. /* The output of this file is included */
  4. /* into the C file cdecl.c. */
  5. char cdlexsccsid[] = "@(#)cdlex.l    2.2 3/30/88";
  6. %}
  7.  
  8. N    [0-9]
  9. A    [A-Z_a-z]
  10. AN    [0-9A-Z_a-z]
  11.  
  12. %%
  13. array        return ARRAY;
  14. as        return AS;
  15. cast        return CAST;
  16. declare        return DECLARE;
  17. exit        return 0;
  18. explain        return EXPLAIN;
  19. function    return FUNCTION;
  20. func        return FUNCTION;
  21. help        return HELP;
  22. into        return INTO;
  23. member        return MEMBER;
  24. of        return OF;
  25. pointer        return POINTER;
  26. ptr        return POINTER;
  27. quit        return 0;
  28. reference    return REFERENCE;
  29. ref        return REFERENCE;
  30. returning    return RETURNING;
  31. ret        return RETURNING;
  32. set        return SET;
  33. to        return TO;
  34. vector        return ARRAY;
  35. ::        return DOUBLECOLON;
  36. [?]        return HELP;
  37. [,]        return COMMA;
  38.  
  39. auto        { yylval.dynstr = ds(yytext);    return AUTO; }
  40. character    { yylval.dynstr = ds("char");    return CHAR; }
  41. char        { yylval.dynstr = ds(yytext);    return CHAR; }
  42. class        { yylval.dynstr = ds(yytext);    return CLASS; }
  43. constant    { yylval.dynstr = ds("const");    return CONSTVOLATILE; }
  44. const        { yylval.dynstr = ds(yytext);    return CONSTVOLATILE; }
  45. double        { yylval.dynstr = ds(yytext);    return DOUBLE; }
  46. enumeration    { yylval.dynstr = ds("enum");    return ENUM; }
  47. enum        { yylval.dynstr = ds(yytext);    return ENUM; }
  48. extern        { yylval.dynstr = ds(yytext);    return EXTERN; }
  49. float        { yylval.dynstr = ds(yytext);    return FLOAT; }
  50. integer        { yylval.dynstr = ds("int");    return INT; }
  51. int        { yylval.dynstr = ds(yytext);    return INT; }
  52. long        { yylval.dynstr = ds(yytext);    return LONG; }
  53. noalias        { yylval.dynstr = ds(yytext);    return CONSTVOLATILE; }
  54. register    { yylval.dynstr = ds(yytext);    return REGISTER; }
  55. short        { yylval.dynstr = ds(yytext);    return SHORT; }
  56. signed        { yylval.dynstr = ds(yytext);    return SIGNED; }
  57. static        { yylval.dynstr = ds(yytext);    return STATIC; }
  58. structure    { yylval.dynstr = ds("struct");    return STRUCT; }
  59. struct        { yylval.dynstr = ds(yytext);    return STRUCT; }
  60. union        { yylval.dynstr = ds(yytext);    return UNION; }
  61. unsigned    { yylval.dynstr = ds(yytext);    return UNSIGNED; }
  62. void        { yylval.dynstr = ds(yytext);    return VOID; }
  63. volatile    { yylval.dynstr = ds(yytext);    return CONSTVOLATILE; }
  64.  
  65. {A}{AN}*    { yylval.dynstr = ds(yytext);    return NAME; }
  66. {N}+        { yylval.dynstr = ds(yytext);    return NUMBER; }
  67.  
  68. [#].*        ;
  69. [\t ]        ;
  70. [&*[\]();\n]    return *yytext;
  71. .        {
  72.             (void) printf("bad character '%s'\n",visible(*yytext));
  73.             return *yytext;
  74.         }
  75. %%
  76.