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 class Kind { 18 TK_END_OF_FILE, 19 TK_FLOAT_LITERAL, 20 TK_INT_LITERAL, 21 TK_TRUE_LITERAL, 22 TK_FALSE_LITERAL, 23 TK_IF, 24 TK_STATIC_IF, 25 TK_ELSE, 26 TK_FOR, 27 TK_WHILE, 28 TK_DO, 29 TK_SWITCH, 30 TK_STATIC_SWITCH, 31 TK_CASE, 32 TK_DEFAULT, 33 TK_BREAK, 34 TK_CONTINUE, 35 TK_DISCARD, 36 TK_RETURN, 37 TK_NULL_LITERAL, 38 TK_IN, 39 TK_OUT, 40 TK_INOUT, 41 TK_UNIFORM, 42 TK_CONST, 43 TK_FLAT, 44 TK_NOPERSPECTIVE, 45 TK_READONLY, 46 TK_WRITEONLY, 47 TK_COHERENT, 48 TK_VOLATILE, 49 TK_RESTRICT, 50 TK_BUFFER, 51 TK_INLINE, 52 TK_HASSIDEEFFECTS, 53 TK_PLS, 54 TK_PLSIN, 55 TK_PLSOUT, 56 TK_VARYING, 57 TK_STRUCT, 58 TK_LAYOUT, 59 TK_PRECISION, 60 TK_ENUM, 61 TK_CLASS, 62 TK_IDENTIFIER, 63 TK_DIRECTIVE, 64 TK_SECTION, 65 TK_LPAREN, 66 TK_RPAREN, 67 TK_LBRACE, 68 TK_RBRACE, 69 TK_LBRACKET, 70 TK_RBRACKET, 71 TK_DOT, 72 TK_COMMA, 73 TK_PLUSPLUS, 74 TK_MINUSMINUS, 75 TK_PLUS, 76 TK_MINUS, 77 TK_STAR, 78 TK_SLASH, 79 TK_PERCENT, 80 TK_SHL, 81 TK_SHR, 82 TK_BITWISEOR, 83 TK_BITWISEXOR, 84 TK_BITWISEAND, 85 TK_BITWISENOT, 86 TK_LOGICALOR, 87 TK_LOGICALXOR, 88 TK_LOGICALAND, 89 TK_LOGICALNOT, 90 TK_QUESTION, 91 TK_COLONCOLON, 92 TK_COLON, 93 TK_EQ, 94 TK_EQEQ, 95 TK_NEQ, 96 TK_GT, 97 TK_LT, 98 TK_GTEQ, 99 TK_LTEQ, 100 TK_PLUSEQ, 101 TK_MINUSEQ, 102 TK_STAREQ, 103 TK_SLASHEQ, 104 TK_PERCENTEQ, 105 TK_SHLEQ, 106 TK_SHREQ, 107 TK_BITWISEOREQ, 108 TK_BITWISEXOREQ, 109 TK_BITWISEANDEQ, 110 TK_LOGICALOREQ, 111 TK_LOGICALXOREQ, 112 TK_LOGICALANDEQ, 113 TK_SEMICOLON, 114 TK_ARROW, 115 TK_WHITESPACE, 116 TK_LINE_COMMENT, 117 TK_BLOCK_COMMENT, 118 TK_INVALID, 119 }; 120 TokenToken121 Token() : fKind(Kind::TK_INVALID), fOffset(-1), fLength(-1) {} 122 TokenToken123 Token(Kind kind, int32_t offset, int32_t length) 124 : fKind(kind), fOffset(offset), fLength(length) {} 125 126 Kind fKind; 127 int fOffset; 128 int fLength; 129 }; 130 131 class Lexer { 132 public: start(const char * text,int32_t length)133 void start(const char* text, int32_t length) { 134 fText = text; 135 fLength = length; 136 fOffset = 0; 137 } 138 139 Token next(); 140 141 private: 142 const char* fText; 143 int32_t fLength; 144 int32_t fOffset; 145 }; 146 147 } // namespace SkSL 148 #endif 149