home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / X / mit / demos / xgc / lex.l < prev    next >
Encoding:
Text File  |  1989-07-21  |  4.3 KB  |  164 lines

  1. /*
  2. ** lex file for xgc syntax
  3. */
  4.  
  5. /* Lots of stuff stolen from gwm's wool.lex */
  6.  
  7. %{
  8.  
  9. #include <X11/X.h>
  10. #include "gram.h"
  11. #include "constants.h"
  12.  
  13. %}
  14.  
  15. %p                4000
  16. %a                3000
  17.  
  18. number                [0-9]+
  19. word                [^\n\t ]+
  20. string                \"([^"]|\\.)*\"
  21.  
  22. %%
  23.  
  24. [Rr]un                { return (RUN); }
  25.  
  26. [Ff]unction            { return (FUNCTION); }
  27. [Cc]lear            { yylval.num = GXclear;
  28.                   return (FUNCTIONTYPE); }
  29. [Aa]nd                { yylval.num = GXand;
  30.                   return (FUNCTIONTYPE); }
  31. [Aa]ndReverse            { yylval.num = GXandReverse;
  32.                   return (FUNCTIONTYPE); }
  33. [Cc]opy                { yylval.num = GXcopy;
  34.                   return (FUNCTIONTYPE); }
  35. [Aa]ndInverted            { yylval.num = GXandInverted;
  36.                   return (FUNCTIONTYPE); }
  37. [Nn]oop                { yylval.num = GXnoop;
  38.                   return (FUNCTIONTYPE); }
  39. [Xx]or                { yylval.num = GXxor;
  40.                   return (FUNCTIONTYPE); }
  41. [Oo]r                { yylval.num = GXor;
  42.                   return (FUNCTIONTYPE); }
  43. [Nn]or                { yylval.num = GXnor;
  44.                   return (FUNCTIONTYPE); }
  45. [Ee]quiv            { yylval.num = GXequiv;
  46.                   return (FUNCTIONTYPE); }
  47. [Ii]nvert            { yylval.num = GXinvert;
  48.                   return (FUNCTIONTYPE); }
  49. [Oo]rReverse            { yylval.num = GXorReverse;
  50.                   return (FUNCTIONTYPE); }
  51. [Cc]opyInverted            { yylval.num = GXcopyInverted;
  52.                   return (FUNCTIONTYPE); }
  53. [Oo]rInverted            { yylval.num = GXorInverted;
  54.                   return (FUNCTIONTYPE); }
  55. [Nn]and                { yylval.num = GXnand;
  56.                   return (FUNCTIONTYPE); }
  57. [Ss]et                { yylval.num = GXset;
  58.                   return (FUNCTIONTYPE); }
  59.  
  60. [Tt]est                { return (TEST); }
  61. CopyArea            { yylval.num = CopyArea;
  62.                   return (TESTTYPE); }
  63. CopyPlane            { yylval.num = CopyPlane;
  64.                   return (TESTTYPE); }
  65. PolyPoint            { yylval.num = PolyPoint;
  66.                   return (TESTTYPE); }
  67. PolyLine            { yylval.num = PolyLine;
  68.                   return (TESTTYPE); }
  69. PolySegment            { yylval.num = PolySegment;
  70.                   return (TESTTYPE); }
  71. PolyRectangle            { yylval.num = PolyRectangle;
  72.                   return (TESTTYPE); }
  73. PolyArc                { yylval.num = PolyArc;
  74.                   return (TESTTYPE); }
  75. FillPolygon            { yylval.num = FillPolygon;
  76.                   return (TESTTYPE); }
  77. PolyFillRect            { yylval.num = PolyFillRect;
  78.                   return (TESTTYPE); }
  79. PolyFillArc            { yylval.num = PolyFillArc;
  80.                   return (TESTTYPE); }
  81. PutImage            { yylval.num = PutImage;
  82.                   return (TESTTYPE); }
  83. GetImage            { yylval.num = GetImage;
  84.                   return (TESTTYPE); }
  85. PolyText8            { yylval.num = PolyText8;
  86.                   return (TESTTYPE); }
  87. ImageText8            { yylval.num = ImageText8;
  88.                   return (TESTTYPE); }
  89. PolyText16            { yylval.num = PolyText16;
  90.                   return (TESTTYPE); }
  91. ImageText16            { yylval.num = ImageText16;
  92.                   return (TESTTYPE); }
  93.  
  94. [Ll]inestyle            { return (LINESTYLE); }
  95. OnOffDash            { yylval.num = LineOnOffDash;
  96.                   return (LINESTYLETYPE); }
  97. DoubleDash            { yylval.num = LineDoubleDash;
  98.                   return (LINESTYLETYPE); }
  99.  
  100. [Cc]apstyle            { return (CAPSTYLE); }
  101. NotLast                { yylval.num = CapNotLast;
  102.                   return (CAPSTYLETYPE); }
  103. Butt                { yylval.num = CapButt;
  104.                   return (CAPSTYLETYPE); }
  105. Projecting            { yylval.num = CapProjecting;
  106.                   return (CAPSTYLETYPE); }
  107.  
  108. [Jj]oinstyle            { return (JOINSTYLE); }
  109. Miter                { yylval.num = JoinMiter;
  110.                   return (JOINSTYLETYPE); }
  111. Bevel                { yylval.num = JoinBevel;
  112.                   return (JOINSTYLETYPE); }
  113.  
  114. Round                { return (ROUND); }
  115.  
  116. [Ff]illstyle            { return (FILLSTYLE); }
  117. Tiled                { yylval.num = FillTiled;
  118.                   return (FILLSTYLETYPE); }
  119. Stippled            { yylval.num = FillStippled;
  120.                   return (FILLSTYLETYPE); }
  121. OpaqueStippled            { yylval.num = FillOpaqueStippled;
  122.                   return (FILLSTYLETYPE); }
  123.  
  124. Solid                { return (SOLID); }
  125.  
  126. [Ff]illrule            { return (FILLRULE); }
  127. EvenOdd                { yylval.num = EvenOddRule;
  128.                   return (FILLRULETYPE); }
  129. Winding                { yylval.num = WindingRule;
  130.                   return (FILLRULETYPE); }
  131.  
  132. [Aa]rcmode            { return (ARCMODE); }
  133. Chord                { yylval.num = ArcChord;
  134.                   return (ARCMODETYPE); }
  135. PieSlice            { yylval.num = ArcPieSlice;
  136.                   return (ARCMODETYPE); }
  137.  
  138. [Ff]oreground            { return (FOREGROUND); }
  139. [Bb]ackground            { return (BACKGROUND); }
  140. [Ll]inewidth            { return (LINEWIDTH); }
  141. [Pp]lanemask            { return (PLANEMASK); }
  142. [Dd]ashlist            { return (DASHLIST); }
  143. [Ff]ont                { return (FONT); }
  144. [Pp]ercent            { return (PERCENT); }
  145.  
  146. {number}            { (void) sscanf (yytext, "%d", &yylval.num);
  147.                   return (NUMBER); }
  148. {string}            { yylval.ptr = (char *) yytext;
  149.                   return (STRING); }
  150. \#[^\n]*\n            { ; }
  151. [\t ]                { ; }
  152. \n                { return ('\n'); }
  153.  
  154. {word}                { yylval.ptr = (char *) yytext;
  155.                   return (STRING); }
  156.  
  157. .                { fprintf(stderr,
  158.                     "xgc: bad character `%s', line %d\n",
  159.                     yytext, yylineno); }
  160.  
  161. %%
  162.  
  163. yywrap() { return (1); }
  164.