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