home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume15 / twm / part01 / lex.l < prev    next >
Text File  |  1988-06-12  |  4KB  |  112 lines

  1. %{
  2. /*****************************************************************************/
  3. /**       Copyright 1988 by Evans & Sutherland Computer Corporation,        **/
  4. /**                          Salt Lake City, Utah                           **/
  5. /**                                                                         **/
  6. /**                           All Rights Reserved                           **/
  7. /**                                                                         **/
  8. /**    Permission to use, copy, modify, and distribute this software and    **/
  9. /**    its documentation  for  any  purpose  and  without  fee is hereby    **/
  10. /**    granted, provided that the above copyright notice appear  in  all    **/
  11. /**    copies and that both  that  copyright  notice  and  this  permis-    **/
  12. /**    sion  notice appear in supporting  documentation,  and  that  the    **/
  13. /**    name  of Evans & Sutherland  not be used in advertising or publi-    **/
  14. /**    city pertaining to distribution  of the software without  specif-    **/
  15. /**    ic, written prior permission.                                        **/
  16. /**                                                                         **/
  17. /**    EVANS  & SUTHERLAND  DISCLAIMS  ALL  WARRANTIES  WITH  REGARD  TO    **/
  18. /**    THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILI-    **/
  19. /**    TY AND FITNESS, IN NO EVENT SHALL EVANS &  SUTHERLAND  BE  LIABLE    **/
  20. /**    FOR  ANY  SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY  DAM-    **/
  21. /**    AGES  WHATSOEVER RESULTING FROM  LOSS OF USE,  DATA  OR  PROFITS,    **/
  22. /**    WHETHER   IN  AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS    **/
  23. /**    ACTION, ARISING OUT OF OR IN  CONNECTION  WITH  THE  USE  OR PER-    **/
  24. /**    FORMANCE OF THIS SOFTWARE.                                           **/
  25. /*****************************************************************************/
  26.  
  27. /***********************************************************************
  28.  *
  29.  * $Header: lex.l,v 1.19 88/04/15 07:09:32 tlastran Exp $
  30.  *
  31.  * .twmrc lex file
  32.  *
  33.  * 12-Nov-87 Thomas E. LaStrange        File created
  34.  *
  35.  ***********************************************************************/
  36.  
  37. static char RCSinfo[]=
  38. "$Header: lex.l,v 1.19 88/04/15 07:09:32 tlastran Exp $";
  39.  
  40. #include <stdio.h>
  41. #include "gram.h"
  42.  
  43. extern int ParseError;
  44.  
  45. %}
  46. qstring                \"[^"]*\"
  47. number                [0-9]+
  48. button                [Bb][Uu][Tt][Tt][Oo][Nn]
  49. tbutton                [Tt][Ii][Tt][Ll][Ee][Bb][Uu][Tt][Tt][Oo][Nn]
  50. %%
  51. "{"                { return LB; }
  52. "}"                { return RB; }
  53.  
  54. {button}{number}        { (void)sscanf(&yytext[6], "%d", &yylval.num);
  55.                   return (BUTTON);
  56.                 }
  57. {tbutton}{number}        { (void)sscanf(&yytext[11], "%d", &yylval.num);
  58.                   return (TBUTTON);
  59.                 }
  60. [Mm][Ee][Nn][Uu]        { return MENU; }
  61.  
  62. f.nop                { return F_NOP; }
  63. f.quit                { return F_QUIT; }
  64. f.title                { return F_TITLE ; }
  65. f.menu                { return F_MENU; }
  66. f.focus                { return F_FOCUS; }
  67. f.refresh            { return F_REFRESH; }
  68. f.file                { return F_FILE; }
  69. f.twmrc                { return F_TWMRC; }
  70. f.version            { return F_VERSION; }
  71. f.circleup            { return F_CIRCLEUP; }
  72. f.circledown            { return F_CIRCLEDOWN; }
  73. f.source            { return F_SOURCE; }
  74. f.cutfile            { return F_CUTFILE; }
  75. "!"                { return F_EXEC; }
  76. "^"                { return F_CUT; }
  77.  
  78. t.nop                { return T_NOP; }
  79. t.raise                { return T_RAISE; }
  80. t.lower                { return T_LOWER; }
  81. t.move                { return T_MOVE; }
  82.  
  83. [Uu][Nn][Kk][Nn][Oo][Ww][Nn][Ii][Cc][Oo][Nn] { return UNKNOWN_ICON; }
  84. [Ww][Aa][Rr][Pp][Cc][Uu][Rr][Ss][Oo][Rr] { return WARPCURSOR; }
  85. [Bb][Oo][Rr][Dd][Ee][Rr][Ww][Ii][Dd][Tt][Hh] { return BORDERWIDTH; }
  86. [Tt][Ii][Tt][Ll][Ee][Ff][Oo][Nn][Tt] { return (TITLE_FONT); }
  87. [Mm][Ee][Nn][Uu][Ff][Oo][Nn][Tt] { return (MENU_FONT); }
  88. [Ii][Cc][Oo][Nn][Ff][Oo][Nn][Tt] { return (ICON_FONT); }
  89. [Rr][Ee][Ss][Ii][Zz][Ee][Ff][Oo][Nn][Tt] { return (RESIZE_FONT); }
  90. [Rr][Ee][Vv][Ee][Rr][Ss][Ee][Vv][Ii][Dd][Ee][Oo] { return (REVERSE_VIDEO); }
  91. [Nn][Oo][Tt][Ii][Tt][Ll][Ee]    { return (NO_TITLE); }
  92. [Aa][Uu][Tt][Oo][Rr][Aa][Ii][Ss][Ee]    { return (AUTO_RAISE); }
  93.  
  94. {qstring}            { yylval.ptr = yytext; return STRING; }
  95. {number}            { (void)sscanf(yytext, "%d", &yylval.num);
  96.                   return (NUMBER);
  97.                 }
  98. \#[^\n]*\n            {;}
  99. [\n\t ]                {;}
  100. .                {
  101.                   fprintf(stderr,
  102.                     "twm: bad character `%s', line %d\n",
  103.                     yytext, yylineno);
  104.                   ParseError = 1;
  105.                 }
  106. %%
  107. yywrap() { return(1);}
  108.  
  109. #define unput(c)    TwmUnput(c)
  110. #define input()        TwmInput()
  111. #define output(c)    TwmOutput(c)
  112.