Ethan Nicholas | 5b5f096 | 2017-09-11 13:50:14 -0700 | [diff] [blame] | 1 | /* |
| 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> |
| 14 | namespace SkSL { |
| 15 | |
| 16 | struct 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 Nicholas | aae47c8 | 2017-11-10 15:34:03 -0500 | [diff] [blame] | 96 | #undef ENUM |
| 97 | ENUM, |
| 98 | #undef CLASS |
| 99 | CLASS, |
Ethan Nicholas | 5b5f096 | 2017-09-11 13:50:14 -0700 | [diff] [blame] | 100 | #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 Nicholas | aae47c8 | 2017-11-10 15:34:03 -0500 | [diff] [blame] | 158 | #undef COLONCOLON |
| 159 | COLONCOLON, |
Ethan Nicholas | 5b5f096 | 2017-09-11 13:50:14 -0700 | [diff] [blame] | 160 | #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 Nicholas | 5b5f096 | 2017-09-11 13:50:14 -0700 | [diff] [blame] | 206 | #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 Nicholas | c7735f1 | 2018-08-03 11:48:20 -0400 | [diff] [blame] | 218 | Token(Kind kind, int32_t offset, int32_t length) |
| 219 | : fKind(kind), fOffset(offset), fLength(length) {} |
Ethan Nicholas | 5b5f096 | 2017-09-11 13:50:14 -0700 | [diff] [blame] | 220 | |
| 221 | Kind fKind; |
| 222 | int fOffset; |
| 223 | int fLength; |
| 224 | }; |
| 225 | |
| 226 | class Lexer { |
| 227 | public: |
Ethan Nicholas | c7735f1 | 2018-08-03 11:48:20 -0400 | [diff] [blame] | 228 | void start(const char* text, int32_t length) { |
Ethan Nicholas | 5b5f096 | 2017-09-11 13:50:14 -0700 | [diff] [blame] | 229 | fText = text; |
| 230 | fLength = length; |
| 231 | fOffset = 0; |
| 232 | } |
| 233 | |
| 234 | Token next(); |
| 235 | |
| 236 | private: |
| 237 | const char* fText; |
Ethan Nicholas | c7735f1 | 2018-08-03 11:48:20 -0400 | [diff] [blame] | 238 | int32_t fLength; |
| 239 | int32_t fOffset; |
Ethan Nicholas | 5b5f096 | 2017-09-11 13:50:14 -0700 | [diff] [blame] | 240 | }; |
| 241 | |
Ethan Nicholas | c7735f1 | 2018-08-03 11:48:20 -0400 | [diff] [blame] | 242 | } // namespace |
Ethan Nicholas | 5b5f096 | 2017-09-11 13:50:14 -0700 | [diff] [blame] | 243 | #endif |