lex.l 4.5 KB

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