blob: 1d090f23892112b75b9a79f2e2898fcead1957a2 [file] [log] [blame]
Ethan Nicholas5b5f0962017-09-11 13:50:14 -07001/*
2 * 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 */
7/*****************************************************************************************
8 ******************** This file was generated by sksllex. Do not edit. *******************
9 *****************************************************************************************/
10#ifndef SKSL_Lexer
11#define SKSL_Lexer
12#include <cstddef>
13#include <cstdint>
14namespace SkSL {
15
16struct Token {
17 enum Kind {
18#undef END_OF_FILE
19 END_OF_FILE,
20#undef FLOAT_LITERAL
21 FLOAT_LITERAL,
22#undef INT_LITERAL
23 INT_LITERAL,
24#undef TRUE_LITERAL
25 TRUE_LITERAL,
26#undef FALSE_LITERAL
27 FALSE_LITERAL,
28#undef IF
29 IF,
30#undef STATIC_IF
31 STATIC_IF,
32#undef ELSE
33 ELSE,
34#undef FOR
35 FOR,
36#undef WHILE
37 WHILE,
38#undef DO
39 DO,
40#undef SWITCH
41 SWITCH,
42#undef STATIC_SWITCH
43 STATIC_SWITCH,
44#undef CASE
45 CASE,
46#undef DEFAULT
47 DEFAULT,
48#undef BREAK
49 BREAK,
50#undef CONTINUE
51 CONTINUE,
52#undef DISCARD
53 DISCARD,
54#undef RETURN
55 RETURN,
56#undef IN
57 IN,
58#undef OUT
59 OUT,
60#undef INOUT
61 INOUT,
62#undef UNIFORM
63 UNIFORM,
64#undef CONST
65 CONST,
66#undef LOWP
67 LOWP,
68#undef MEDIUMP
69 MEDIUMP,
70#undef HIGHP
71 HIGHP,
72#undef FLAT
73 FLAT,
74#undef NOPERSPECTIVE
75 NOPERSPECTIVE,
76#undef READONLY
77 READONLY,
78#undef WRITEONLY
79 WRITEONLY,
80#undef COHERENT
81 COHERENT,
82#undef VOLATILE
83 VOLATILE,
84#undef RESTRICT
85 RESTRICT,
86#undef BUFFER
87 BUFFER,
88#undef HASSIDEEFFECTS
89 HASSIDEEFFECTS,
90#undef STRUCT
91 STRUCT,
92#undef LAYOUT
93 LAYOUT,
94#undef PRECISION
95 PRECISION,
Ethan Nicholasaae47c82017-11-10 15:34:03 -050096#undef ENUM
97 ENUM,
98#undef CLASS
99 CLASS,
Ethan Nicholas5b5f0962017-09-11 13:50:14 -0700100#undef IDENTIFIER
101 IDENTIFIER,
102#undef DIRECTIVE
103 DIRECTIVE,
104#undef SECTION
105 SECTION,
106#undef LPAREN
107 LPAREN,
108#undef RPAREN
109 RPAREN,
110#undef LBRACE
111 LBRACE,
112#undef RBRACE
113 RBRACE,
114#undef LBRACKET
115 LBRACKET,
116#undef RBRACKET
117 RBRACKET,
118#undef DOT
119 DOT,
120#undef COMMA
121 COMMA,
122#undef PLUSPLUS
123 PLUSPLUS,
124#undef MINUSMINUS
125 MINUSMINUS,
126#undef PLUS
127 PLUS,
128#undef MINUS
129 MINUS,
130#undef STAR
131 STAR,
132#undef SLASH
133 SLASH,
134#undef PERCENT
135 PERCENT,
136#undef SHL
137 SHL,
138#undef SHR
139 SHR,
140#undef BITWISEOR
141 BITWISEOR,
142#undef BITWISEXOR
143 BITWISEXOR,
144#undef BITWISEAND
145 BITWISEAND,
146#undef BITWISENOT
147 BITWISENOT,
148#undef LOGICALOR
149 LOGICALOR,
150#undef LOGICALXOR
151 LOGICALXOR,
152#undef LOGICALAND
153 LOGICALAND,
154#undef LOGICALNOT
155 LOGICALNOT,
156#undef QUESTION
157 QUESTION,
Ethan Nicholasaae47c82017-11-10 15:34:03 -0500158#undef COLONCOLON
159 COLONCOLON,
Ethan Nicholas5b5f0962017-09-11 13:50:14 -0700160#undef COLON
161 COLON,
162#undef EQ
163 EQ,
164#undef EQEQ
165 EQEQ,
166#undef NEQ
167 NEQ,
168#undef GT
169 GT,
170#undef LT
171 LT,
172#undef GTEQ
173 GTEQ,
174#undef LTEQ
175 LTEQ,
176#undef PLUSEQ
177 PLUSEQ,
178#undef MINUSEQ
179 MINUSEQ,
180#undef STAREQ
181 STAREQ,
182#undef SLASHEQ
183 SLASHEQ,
184#undef PERCENTEQ
185 PERCENTEQ,
186#undef SHLEQ
187 SHLEQ,
188#undef SHREQ
189 SHREQ,
190#undef BITWISEOREQ
191 BITWISEOREQ,
192#undef BITWISEXOREQ
193 BITWISEXOREQ,
194#undef BITWISEANDEQ
195 BITWISEANDEQ,
196#undef LOGICALOREQ
197 LOGICALOREQ,
198#undef LOGICALXOREQ
199 LOGICALXOREQ,
200#undef LOGICALANDEQ
201 LOGICALANDEQ,
202#undef SEMICOLON
203 SEMICOLON,
204#undef ARROW
205 ARROW,
Ethan Nicholas5b5f0962017-09-11 13:50:14 -0700206#undef WHITESPACE
207 WHITESPACE,
208#undef LINE_COMMENT
209 LINE_COMMENT,
210#undef BLOCK_COMMENT
211 BLOCK_COMMENT,
212#undef INVALID
213 INVALID,
214 };
215
216 Token() : fKind(Kind::INVALID), fOffset(-1), fLength(-1) {}
217
Ethan Nicholasc7735f12018-08-03 11:48:20 -0400218 Token(Kind kind, int32_t offset, int32_t length)
219 : fKind(kind), fOffset(offset), fLength(length) {}
Ethan Nicholas5b5f0962017-09-11 13:50:14 -0700220
221 Kind fKind;
222 int fOffset;
223 int fLength;
224};
225
226class Lexer {
227public:
Ethan Nicholasc7735f12018-08-03 11:48:20 -0400228 void start(const char* text, int32_t length) {
Ethan Nicholas5b5f0962017-09-11 13:50:14 -0700229 fText = text;
230 fLength = length;
231 fOffset = 0;
232 }
233
234 Token next();
235
236private:
237 const char* fText;
Ethan Nicholasc7735f12018-08-03 11:48:20 -0400238 int32_t fLength;
239 int32_t fOffset;
Ethan Nicholas5b5f0962017-09-11 13:50:14 -0700240};
241
Ethan Nicholasc7735f12018-08-03 11:48:20 -0400242} // namespace
Ethan Nicholas5b5f0962017-09-11 13:50:14 -0700243#endif