aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sksl/SkSLLexer.h
blob: 270028703403e38f205f204cf938bce2caefbde3 (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
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
/*
 * Copyright 2017 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */
/*****************************************************************************************
 ******************** This file was generated by sksllex. Do not edit. *******************
 *****************************************************************************************/
#ifndef SKSL_Lexer
#define SKSL_Lexer
#include <cstddef>
#include <cstdint>
namespace SkSL {

struct Token {
    enum Kind {
#undef END_OF_FILE
        END_OF_FILE,
#undef FLOAT_LITERAL
        FLOAT_LITERAL,
#undef INT_LITERAL
        INT_LITERAL,
#undef TRUE_LITERAL
        TRUE_LITERAL,
#undef FALSE_LITERAL
        FALSE_LITERAL,
#undef IF
        IF,
#undef STATIC_IF
        STATIC_IF,
#undef ELSE
        ELSE,
#undef FOR
        FOR,
#undef WHILE
        WHILE,
#undef DO
        DO,
#undef SWITCH
        SWITCH,
#undef STATIC_SWITCH
        STATIC_SWITCH,
#undef CASE
        CASE,
#undef DEFAULT
        DEFAULT,
#undef BREAK
        BREAK,
#undef CONTINUE
        CONTINUE,
#undef DISCARD
        DISCARD,
#undef RETURN
        RETURN,
#undef IN
        IN,
#undef OUT
        OUT,
#undef INOUT
        INOUT,
#undef UNIFORM
        UNIFORM,
#undef CONST
        CONST,
#undef LOWP
        LOWP,
#undef MEDIUMP
        MEDIUMP,
#undef HIGHP
        HIGHP,
#undef FLAT
        FLAT,
#undef NOPERSPECTIVE
        NOPERSPECTIVE,
#undef READONLY
        READONLY,
#undef WRITEONLY
        WRITEONLY,
#undef COHERENT
        COHERENT,
#undef VOLATILE
        VOLATILE,
#undef RESTRICT
        RESTRICT,
#undef BUFFER
        BUFFER,
#undef HASSIDEEFFECTS
        HASSIDEEFFECTS,
#undef STRUCT
        STRUCT,
#undef LAYOUT
        LAYOUT,
#undef PRECISION
        PRECISION,
#undef ENUM
        ENUM,
#undef CLASS
        CLASS,
#undef IDENTIFIER
        IDENTIFIER,
#undef DIRECTIVE
        DIRECTIVE,
#undef SECTION
        SECTION,
#undef LPAREN
        LPAREN,
#undef RPAREN
        RPAREN,
#undef LBRACE
        LBRACE,
#undef RBRACE
        RBRACE,
#undef LBRACKET
        LBRACKET,
#undef RBRACKET
        RBRACKET,
#undef DOT
        DOT,
#undef COMMA
        COMMA,
#undef PLUSPLUS
        PLUSPLUS,
#undef MINUSMINUS
        MINUSMINUS,
#undef PLUS
        PLUS,
#undef MINUS
        MINUS,
#undef STAR
        STAR,
#undef SLASH
        SLASH,
#undef PERCENT
        PERCENT,
#undef SHL
        SHL,
#undef SHR
        SHR,
#undef BITWISEOR
        BITWISEOR,
#undef BITWISEXOR
        BITWISEXOR,
#undef BITWISEAND
        BITWISEAND,
#undef BITWISENOT
        BITWISENOT,
#undef LOGICALOR
        LOGICALOR,
#undef LOGICALXOR
        LOGICALXOR,
#undef LOGICALAND
        LOGICALAND,
#undef LOGICALNOT
        LOGICALNOT,
#undef QUESTION
        QUESTION,
#undef COLONCOLON
        COLONCOLON,
#undef COLON
        COLON,
#undef EQ
        EQ,
#undef EQEQ
        EQEQ,
#undef NEQ
        NEQ,
#undef GT
        GT,
#undef LT
        LT,
#undef GTEQ
        GTEQ,
#undef LTEQ
        LTEQ,
#undef PLUSEQ
        PLUSEQ,
#undef MINUSEQ
        MINUSEQ,
#undef STAREQ
        STAREQ,
#undef SLASHEQ
        SLASHEQ,
#undef PERCENTEQ
        PERCENTEQ,
#undef SHLEQ
        SHLEQ,
#undef SHREQ
        SHREQ,
#undef BITWISEOREQ
        BITWISEOREQ,
#undef BITWISEXOREQ
        BITWISEXOREQ,
#undef BITWISEANDEQ
        BITWISEANDEQ,
#undef LOGICALOREQ
        LOGICALOREQ,
#undef LOGICALXOREQ
        LOGICALXOREQ,
#undef LOGICALANDEQ
        LOGICALANDEQ,
#undef SEMICOLON
        SEMICOLON,
#undef ARROW
        ARROW,
#undef WHITESPACE
        WHITESPACE,
#undef LINE_COMMENT
        LINE_COMMENT,
#undef BLOCK_COMMENT
        BLOCK_COMMENT,
#undef INVALID
        INVALID,
    };

    Token() : fKind(Kind::INVALID), fOffset(-1), fLength(-1) {}

    Token(Kind kind, int offset, int length) : fKind(kind), fOffset(offset), fLength(length) {}

    Kind fKind;
    int fOffset;
    int fLength;
};

class Lexer {
public:
    void start(const char* text, size_t length) {
        fText = text;
        fLength = length;
        fOffset = 0;
    }

    Token next();

private:
    const char* fText;
    int fLength;
    int fOffset;
};

}  // namespace SkSL
#endif