summaryrefslogtreecommitdiff
path: root/lex.l
blob: 0bd1606b2423ee96db35a0cf026e0b353ce0b80c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
/*
** lex file for xgc syntax
*/

/* Lots of stuff stolen from gwm's wool.lex */

%{

#include <X11/X.h>
#include <stdlib.h>
#include "gram.h"
#include "constants.h"
#if defined(FLEX_SCANNER) && !defined(YY_FLEX_LEX_COMPAT)
int yylineno;
#endif
%}

%p				4000
%a				3000

number				[0-9]+
word				[^\n\t ]+
string				\"([^"]|\\.)*\"

%%

[Rr]un				{ return (RUN); }

[Ff]unction			{ return (FUNCTION); }
[Cc]lear			{ yylval.num = GXclear;
				  return (FUNCTIONTYPE); }
[Aa]nd				{ yylval.num = GXand;
				  return (FUNCTIONTYPE); }
[Aa]ndReverse			{ yylval.num = GXandReverse;
				  return (FUNCTIONTYPE); }
[Cc]opy				{ yylval.num = GXcopy;
				  return (FUNCTIONTYPE); }
[Aa]ndInverted			{ yylval.num = GXandInverted;
				  return (FUNCTIONTYPE); }
[Nn]oop				{ yylval.num = GXnoop;
				  return (FUNCTIONTYPE); }
[Xx]or				{ yylval.num = GXxor;
				  return (FUNCTIONTYPE); }
[Oo]r				{ yylval.num = GXor;
				  return (FUNCTIONTYPE); }
[Nn]or				{ yylval.num = GXnor;
				  return (FUNCTIONTYPE); }
[Ee]quiv			{ yylval.num = GXequiv;
				  return (FUNCTIONTYPE); }
[Ii]nvert			{ yylval.num = GXinvert;
				  return (FUNCTIONTYPE); }
[Oo]rReverse			{ yylval.num = GXorReverse;
				  return (FUNCTIONTYPE); }
[Cc]opyInverted			{ yylval.num = GXcopyInverted;
				  return (FUNCTIONTYPE); }
[Oo]rInverted			{ yylval.num = GXorInverted;
				  return (FUNCTIONTYPE); }
[Nn]and				{ yylval.num = GXnand;
				  return (FUNCTIONTYPE); }
[Ss]et				{ yylval.num = GXset;
				  return (FUNCTIONTYPE); }

[Tt]est				{ return (TEST); }
CopyArea			{ yylval.num = CopyArea;
				  return (TESTTYPE); }
CopyPlane			{ yylval.num = CopyPlane;
				  return (TESTTYPE); }
PolyPoint			{ yylval.num = PolyPoint;
				  return (TESTTYPE); }
PolyLine			{ yylval.num = PolyLine;
				  return (TESTTYPE); }
PolySegment			{ yylval.num = PolySegment;
				  return (TESTTYPE); }
PolyRectangle			{ yylval.num = PolyRectangle;
				  return (TESTTYPE); }
PolyArc				{ yylval.num = PolyArc;
				  return (TESTTYPE); }
FillPolygon			{ yylval.num = FillPolygon;
				  return (TESTTYPE); }
PolyFillRect			{ yylval.num = PolyFillRect;
				  return (TESTTYPE); }
PolyFillArc			{ yylval.num = PolyFillArc;
				  return (TESTTYPE); }
PutImage			{ yylval.num = PutImage;
				  return (TESTTYPE); }
GetImage			{ yylval.num = GetImage;
				  return (TESTTYPE); }
PolyText8			{ yylval.num = PolyText8;
				  return (TESTTYPE); }
ImageText8			{ yylval.num = ImageText8;
				  return (TESTTYPE); }
PolyText16			{ yylval.num = PolyText16;
				  return (TESTTYPE); }
ImageText16			{ yylval.num = ImageText16;
				  return (TESTTYPE); }

[Ll]inestyle			{ return (LINESTYLE); }
OnOffDash			{ yylval.num = LineOnOffDash;
				  return (LINESTYLETYPE); }
DoubleDash			{ yylval.num = LineDoubleDash;
				  return (LINESTYLETYPE); }

[Cc]apstyle			{ return (CAPSTYLE); }
NotLast				{ yylval.num = CapNotLast;
				  return (CAPSTYLETYPE); }
Butt				{ yylval.num = CapButt;
				  return (CAPSTYLETYPE); }
Projecting			{ yylval.num = CapProjecting;
				  return (CAPSTYLETYPE); }

[Jj]oinstyle			{ return (JOINSTYLE); }
Miter				{ yylval.num = JoinMiter;
				  return (JOINSTYLETYPE); }
Bevel				{ yylval.num = JoinBevel;
				  return (JOINSTYLETYPE); }

Round				{ return (ROUND); }

[Ff]illstyle			{ return (FILLSTYLE); }
Tiled				{ yylval.num = FillTiled;
				  return (FILLSTYLETYPE); }
Stippled			{ yylval.num = FillStippled;
				  return (FILLSTYLETYPE); }
OpaqueStippled			{ yylval.num = FillOpaqueStippled;
				  return (FILLSTYLETYPE); }

Solid				{ return (SOLID); }

[Ff]illrule			{ return (FILLRULE); }
EvenOdd				{ yylval.num = EvenOddRule;
				  return (FILLRULETYPE); }
Winding				{ yylval.num = WindingRule;
				  return (FILLRULETYPE); }

[Aa]rcmode			{ return (ARCMODE); }
Chord				{ yylval.num = ArcChord;
				  return (ARCMODETYPE); }
PieSlice			{ yylval.num = ArcPieSlice;
				  return (ARCMODETYPE); }

[Ff]oreground			{ return (FOREGROUND); }
[Bb]ackground			{ return (BACKGROUND); }
[Ll]inewidth			{ return (LINEWIDTH); }
[Pp]lanemask			{ return (PLANEMASK); }
[Dd]ashlist			{ return (DASHLIST); }
[Ff]ont				{ return (FONT); }
[Pp]ercent			{ return (PERCENT); }

{number}			{ (void) sscanf ((char *)yytext, "%d", &yylval.num);
				  return (NUMBER); }
{string}			{ yylval.ptr = (char *) yytext;
				  return (STRING); }
\#[^\n]*\n			{ ; }
[\t ]				{ ; }
\n				{ return ('\n'); }

{word}				{ yylval.ptr = (char *) yytext;
				  return (STRING); }

.				{ fprintf(stderr,
					"xgc: bad character `%s', line %d\n",
					yytext, yylineno); }

%%

#ifndef yywrap
int yywrap(void) { return (1); }
#endif