blob: 2dd42251f0ba7b79811bfbb1ef7b87961f704612 [file] [log] [blame]
ethannicholasb3058bd2016-07-01 08:22:01 -07001/*
Ethan Nicholasbfe15f62017-03-01 11:46:51 -05002 * Copyright 2017 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
ethannicholasb3058bd2016-07-01 08:22:01 -07007
Ethan Nicholasbfe15f62017-03-01 11:46:51 -05008/*
ethannicholasb3058bd2016-07-01 08:22:01 -07009
Ethan Nicholasbfe15f62017-03-01 11:46:51 -050010 This file is IGNORED during the build process!
ethannicholasb3058bd2016-07-01 08:22:01 -070011
Ethan Nicholasbfe15f62017-03-01 11:46:51 -050012 As this file is updated so infrequently and flex is not universally present on build machines,
13 the lex.sksl.c file must be manually regenerated if you make any changes to this file. Just run:
14
15 flex sksl.flex
ethannicholasb3058bd2016-07-01 08:22:01 -070016
17 You will have to manually add a copyright notice to the top of lex.sksl.c.
Ethan Nicholasbfe15f62017-03-01 11:46:51 -050018
ethannicholasb3058bd2016-07-01 08:22:01 -070019*/
20
21%option prefix="sksl"
22%option reentrant
23%option yylineno
24%option never-interactive
25%option nounistd
26
27DIGIT [0-9]
28LETTER [a-zA-Z_$]
29
30%%
31
32{DIGIT}*"."{DIGIT}+([eE][+-]?{DIGIT}+)? { return SkSL::Token::FLOAT_LITERAL; }
33
34{DIGIT}+"."{DIGIT}*([eE][+-]?{DIGIT}+)? { return SkSL::Token::FLOAT_LITERAL; }
35
36{DIGIT}+([eE][+-]?{DIGIT}+) { return SkSL::Token::FLOAT_LITERAL; }
37
38{DIGIT}+ { return SkSL::Token::INT_LITERAL; }
39
ethannicholas5961bc92016-10-12 06:39:56 -070040"0x"[0-9a-fA-F]+ { return SkSL::Token::INT_LITERAL; }
41
ethannicholasb3058bd2016-07-01 08:22:01 -070042true { return SkSL::Token::TRUE_LITERAL; }
43
44false { return SkSL::Token::FALSE_LITERAL; }
45
46if { return SkSL::Token::IF; }
47
48else { return SkSL::Token::ELSE; }
49
50for { return SkSL::Token::FOR; }
51
52while { return SkSL::Token::WHILE; }
53
54do { return SkSL::Token::DO; }
55
Ethan Nicholasaf197692017-02-27 13:26:45 -050056switch { return SkSL::Token::SWITCH; }
57
58case { return SkSL::Token::CASE; }
59
60default { return SkSL::Token::DEFAULT; }
61
ethannicholasb3058bd2016-07-01 08:22:01 -070062break { return SkSL::Token::BREAK; }
63
64continue { return SkSL::Token::CONTINUE; }
65
66discard { return SkSL::Token::DISCARD; }
67
68return { return SkSL::Token::RETURN; }
69
70in { return SkSL::Token::IN; }
71
72out { return SkSL::Token::OUT; }
73
74inout { return SkSL::Token::INOUT; }
75
76uniform { return SkSL::Token::UNIFORM; }
77
78const { return SkSL::Token::CONST; }
79
80lowp { return SkSL::Token::LOWP; }
81
82mediump { return SkSL::Token::MEDIUMP; }
83
84highp { return SkSL::Token::HIGHP; }
85
ethannicholasf789b382016-08-03 12:43:36 -070086flat { return SkSL::Token::FLAT; }
87
88noperspective { return SkSL::Token::NOPERSPECTIVE; }
89
Brian Salomonf9f45122016-11-29 11:59:17 -050090readonly { return SkSL::Token::READONLY; }
91
92writeonly { return SkSL::Token::WRITEONLY; }
93
94coherent { return SkSL::Token::COHERENT; }
95
96volatile { return SkSL::Token::VOLATILE; }
97
98restrict { return SkSL::Token::RESTRICT; }
99
Ethan Nicholascb670962017-04-20 19:31:52 -0400100sk_has_side_effects { return SkSL::Token::HASSIDEEFFECTS; }
101
ethannicholasb3058bd2016-07-01 08:22:01 -0700102struct { return SkSL::Token::STRUCT; }
103
104layout { return SkSL::Token::LAYOUT; }
105
106precision { return SkSL::Token::PRECISION; }
107
108{LETTER}({DIGIT}|{LETTER})* { return SkSL::Token::IDENTIFIER; }
109
110"#"{LETTER}({DIGIT}|{LETTER})* { return SkSL::Token::DIRECTIVE; }
111
112"(" { return SkSL::Token::LPAREN; }
113
114")" { return SkSL::Token::RPAREN; }
115
116"{" { return SkSL::Token::LBRACE; }
117
118"}" { return SkSL::Token::RBRACE; }
119
120"[" { return SkSL::Token::LBRACKET; }
121
122"]" { return SkSL::Token::RBRACKET; }
123
124"." { return SkSL::Token::DOT; }
125
126"," { return SkSL::Token::COMMA; }
127
128"++" { return SkSL::Token::PLUSPLUS; }
129
130"--" { return SkSL::Token::MINUSMINUS; }
131
132"+" { return SkSL::Token::PLUS; }
133
134"-" { return SkSL::Token::MINUS; }
135
136"*" { return SkSL::Token::STAR; }
137
138"/" { return SkSL::Token::SLASH; }
139
140"%" { return SkSL::Token::PERCENT; }
141
142"<<" { return SkSL::Token::SHL; }
143
144">>" { return SkSL::Token::SHR; }
145
146"|" { return SkSL::Token::BITWISEOR; }
147
148"^" { return SkSL::Token::BITWISEXOR; }
149
150"&" { return SkSL::Token::BITWISEAND; }
151
ethannicholas5961bc92016-10-12 06:39:56 -0700152"~" { return SkSL::Token::BITWISENOT; }
153
ethannicholasb3058bd2016-07-01 08:22:01 -0700154"||" { return SkSL::Token::LOGICALOR; }
155
156"^^" { return SkSL::Token::LOGICALXOR; }
157
158"&&" { return SkSL::Token::LOGICALAND; }
159
ethannicholas5961bc92016-10-12 06:39:56 -0700160"!" { return SkSL::Token::LOGICALNOT; }
ethannicholasb3058bd2016-07-01 08:22:01 -0700161
162"?" { return SkSL::Token::QUESTION; }
163
164":" { return SkSL::Token::COLON; }
165
166"=" { return SkSL::Token::EQ; }
167
168"==" { return SkSL::Token::EQEQ; }
169
170"!=" { return SkSL::Token::NEQ; }
171
172">" { return SkSL::Token::GT; }
173
174"<" { return SkSL::Token::LT; }
175
176">=" { return SkSL::Token::GTEQ; }
177
178"<=" { return SkSL::Token::LTEQ; }
179
180"+=" { return SkSL::Token::PLUSEQ; }
181
182"-=" { return SkSL::Token::MINUSEQ; }
183
184"*=" { return SkSL::Token::STAREQ; }
185
186"/=" { return SkSL::Token::SLASHEQ; }
187
188"%=" { return SkSL::Token::PERCENTEQ; }
189
190"<<=" { return SkSL::Token::SHLEQ; }
191
192">>=" { return SkSL::Token::SHREQ; }
193
194"|=" { return SkSL::Token::BITWISEOREQ; }
195
196"^=" { return SkSL::Token::BITWISEXOREQ; }
197
198"&=" { return SkSL::Token::BITWISEANDEQ; }
199
200"||=" { return SkSL::Token::LOGICALOREQ; }
201
202"^^=" { return SkSL::Token::LOGICALXOREQ; }
203
204"&&=" { return SkSL::Token::LOGICALANDEQ; }
205
206";" { return SkSL::Token::SEMICOLON; }
207
208"//".* /* line comment */
209
210"/*"([^*]|"*"[^/])*"*/" /* block comment */
211
212[ \t\r\n]+ /* whitespace */
213
214. { return SkSL::Token::INVALID_TOKEN; }
215
216%%
217
218int skslwrap(yyscan_t scanner) {
219 return 1; // terminate
220}