1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2017 Google Inc. 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker /***************************************************************************************** 8*c8dee2aaSAndroid Build Coastguard Worker ******************** This file was generated by sksllex. Do not edit. ******************* 9*c8dee2aaSAndroid Build Coastguard Worker *****************************************************************************************/ 10*c8dee2aaSAndroid Build Coastguard Worker #ifndef SKSL_Lexer 11*c8dee2aaSAndroid Build Coastguard Worker #define SKSL_Lexer 12*c8dee2aaSAndroid Build Coastguard Worker #include <cstdint> 13*c8dee2aaSAndroid Build Coastguard Worker #include <string_view> 14*c8dee2aaSAndroid Build Coastguard Worker namespace SkSL { 15*c8dee2aaSAndroid Build Coastguard Worker 16*c8dee2aaSAndroid Build Coastguard Worker struct Token { 17*c8dee2aaSAndroid Build Coastguard Worker enum class Kind { 18*c8dee2aaSAndroid Build Coastguard Worker TK_END_OF_FILE, 19*c8dee2aaSAndroid Build Coastguard Worker TK_FLOAT_LITERAL, 20*c8dee2aaSAndroid Build Coastguard Worker TK_INT_LITERAL, 21*c8dee2aaSAndroid Build Coastguard Worker TK_BAD_OCTAL, 22*c8dee2aaSAndroid Build Coastguard Worker TK_TRUE_LITERAL, 23*c8dee2aaSAndroid Build Coastguard Worker TK_FALSE_LITERAL, 24*c8dee2aaSAndroid Build Coastguard Worker TK_IF, 25*c8dee2aaSAndroid Build Coastguard Worker TK_ELSE, 26*c8dee2aaSAndroid Build Coastguard Worker TK_FOR, 27*c8dee2aaSAndroid Build Coastguard Worker TK_WHILE, 28*c8dee2aaSAndroid Build Coastguard Worker TK_DO, 29*c8dee2aaSAndroid Build Coastguard Worker TK_SWITCH, 30*c8dee2aaSAndroid Build Coastguard Worker TK_CASE, 31*c8dee2aaSAndroid Build Coastguard Worker TK_DEFAULT, 32*c8dee2aaSAndroid Build Coastguard Worker TK_BREAK, 33*c8dee2aaSAndroid Build Coastguard Worker TK_CONTINUE, 34*c8dee2aaSAndroid Build Coastguard Worker TK_DISCARD, 35*c8dee2aaSAndroid Build Coastguard Worker TK_RETURN, 36*c8dee2aaSAndroid Build Coastguard Worker TK_IN, 37*c8dee2aaSAndroid Build Coastguard Worker TK_OUT, 38*c8dee2aaSAndroid Build Coastguard Worker TK_INOUT, 39*c8dee2aaSAndroid Build Coastguard Worker TK_UNIFORM, 40*c8dee2aaSAndroid Build Coastguard Worker TK_CONST, 41*c8dee2aaSAndroid Build Coastguard Worker TK_FLAT, 42*c8dee2aaSAndroid Build Coastguard Worker TK_NOPERSPECTIVE, 43*c8dee2aaSAndroid Build Coastguard Worker TK_INLINE, 44*c8dee2aaSAndroid Build Coastguard Worker TK_NOINLINE, 45*c8dee2aaSAndroid Build Coastguard Worker TK_PURE, 46*c8dee2aaSAndroid Build Coastguard Worker TK_READONLY, 47*c8dee2aaSAndroid Build Coastguard Worker TK_WRITEONLY, 48*c8dee2aaSAndroid Build Coastguard Worker TK_BUFFER, 49*c8dee2aaSAndroid Build Coastguard Worker TK_STRUCT, 50*c8dee2aaSAndroid Build Coastguard Worker TK_LAYOUT, 51*c8dee2aaSAndroid Build Coastguard Worker TK_HIGHP, 52*c8dee2aaSAndroid Build Coastguard Worker TK_MEDIUMP, 53*c8dee2aaSAndroid Build Coastguard Worker TK_LOWP, 54*c8dee2aaSAndroid Build Coastguard Worker TK_ES3, 55*c8dee2aaSAndroid Build Coastguard Worker TK_EXPORT, 56*c8dee2aaSAndroid Build Coastguard Worker TK_WORKGROUP, 57*c8dee2aaSAndroid Build Coastguard Worker TK_PIXELLOCAL, 58*c8dee2aaSAndroid Build Coastguard Worker TK_RESERVED, 59*c8dee2aaSAndroid Build Coastguard Worker TK_PRIVATE_IDENTIFIER, 60*c8dee2aaSAndroid Build Coastguard Worker TK_IDENTIFIER, 61*c8dee2aaSAndroid Build Coastguard Worker TK_DIRECTIVE, 62*c8dee2aaSAndroid Build Coastguard Worker TK_LPAREN, 63*c8dee2aaSAndroid Build Coastguard Worker TK_RPAREN, 64*c8dee2aaSAndroid Build Coastguard Worker TK_LBRACE, 65*c8dee2aaSAndroid Build Coastguard Worker TK_RBRACE, 66*c8dee2aaSAndroid Build Coastguard Worker TK_LBRACKET, 67*c8dee2aaSAndroid Build Coastguard Worker TK_RBRACKET, 68*c8dee2aaSAndroid Build Coastguard Worker TK_DOT, 69*c8dee2aaSAndroid Build Coastguard Worker TK_COMMA, 70*c8dee2aaSAndroid Build Coastguard Worker TK_PLUSPLUS, 71*c8dee2aaSAndroid Build Coastguard Worker TK_MINUSMINUS, 72*c8dee2aaSAndroid Build Coastguard Worker TK_PLUS, 73*c8dee2aaSAndroid Build Coastguard Worker TK_MINUS, 74*c8dee2aaSAndroid Build Coastguard Worker TK_STAR, 75*c8dee2aaSAndroid Build Coastguard Worker TK_SLASH, 76*c8dee2aaSAndroid Build Coastguard Worker TK_PERCENT, 77*c8dee2aaSAndroid Build Coastguard Worker TK_SHL, 78*c8dee2aaSAndroid Build Coastguard Worker TK_SHR, 79*c8dee2aaSAndroid Build Coastguard Worker TK_BITWISEOR, 80*c8dee2aaSAndroid Build Coastguard Worker TK_BITWISEXOR, 81*c8dee2aaSAndroid Build Coastguard Worker TK_BITWISEAND, 82*c8dee2aaSAndroid Build Coastguard Worker TK_BITWISENOT, 83*c8dee2aaSAndroid Build Coastguard Worker TK_LOGICALOR, 84*c8dee2aaSAndroid Build Coastguard Worker TK_LOGICALXOR, 85*c8dee2aaSAndroid Build Coastguard Worker TK_LOGICALAND, 86*c8dee2aaSAndroid Build Coastguard Worker TK_LOGICALNOT, 87*c8dee2aaSAndroid Build Coastguard Worker TK_QUESTION, 88*c8dee2aaSAndroid Build Coastguard Worker TK_COLON, 89*c8dee2aaSAndroid Build Coastguard Worker TK_EQ, 90*c8dee2aaSAndroid Build Coastguard Worker TK_EQEQ, 91*c8dee2aaSAndroid Build Coastguard Worker TK_NEQ, 92*c8dee2aaSAndroid Build Coastguard Worker TK_GT, 93*c8dee2aaSAndroid Build Coastguard Worker TK_LT, 94*c8dee2aaSAndroid Build Coastguard Worker TK_GTEQ, 95*c8dee2aaSAndroid Build Coastguard Worker TK_LTEQ, 96*c8dee2aaSAndroid Build Coastguard Worker TK_PLUSEQ, 97*c8dee2aaSAndroid Build Coastguard Worker TK_MINUSEQ, 98*c8dee2aaSAndroid Build Coastguard Worker TK_STAREQ, 99*c8dee2aaSAndroid Build Coastguard Worker TK_SLASHEQ, 100*c8dee2aaSAndroid Build Coastguard Worker TK_PERCENTEQ, 101*c8dee2aaSAndroid Build Coastguard Worker TK_SHLEQ, 102*c8dee2aaSAndroid Build Coastguard Worker TK_SHREQ, 103*c8dee2aaSAndroid Build Coastguard Worker TK_BITWISEOREQ, 104*c8dee2aaSAndroid Build Coastguard Worker TK_BITWISEXOREQ, 105*c8dee2aaSAndroid Build Coastguard Worker TK_BITWISEANDEQ, 106*c8dee2aaSAndroid Build Coastguard Worker TK_SEMICOLON, 107*c8dee2aaSAndroid Build Coastguard Worker TK_WHITESPACE, 108*c8dee2aaSAndroid Build Coastguard Worker TK_LINE_COMMENT, 109*c8dee2aaSAndroid Build Coastguard Worker TK_BLOCK_COMMENT, 110*c8dee2aaSAndroid Build Coastguard Worker TK_INVALID, 111*c8dee2aaSAndroid Build Coastguard Worker TK_NONE, 112*c8dee2aaSAndroid Build Coastguard Worker }; 113*c8dee2aaSAndroid Build Coastguard Worker TokenToken114*c8dee2aaSAndroid Build Coastguard Worker Token() {} TokenToken115*c8dee2aaSAndroid Build Coastguard Worker Token(Kind kind, int32_t offset, int32_t length) 116*c8dee2aaSAndroid Build Coastguard Worker : fKind(kind), fOffset(offset), fLength(length) {} 117*c8dee2aaSAndroid Build Coastguard Worker 118*c8dee2aaSAndroid Build Coastguard Worker Kind fKind = Kind::TK_NONE; 119*c8dee2aaSAndroid Build Coastguard Worker int32_t fOffset = -1; 120*c8dee2aaSAndroid Build Coastguard Worker int32_t fLength = -1; 121*c8dee2aaSAndroid Build Coastguard Worker }; 122*c8dee2aaSAndroid Build Coastguard Worker 123*c8dee2aaSAndroid Build Coastguard Worker class Lexer { 124*c8dee2aaSAndroid Build Coastguard Worker public: start(std::string_view text)125*c8dee2aaSAndroid Build Coastguard Worker void start(std::string_view text) { 126*c8dee2aaSAndroid Build Coastguard Worker fText = text; 127*c8dee2aaSAndroid Build Coastguard Worker fOffset = 0; 128*c8dee2aaSAndroid Build Coastguard Worker } 129*c8dee2aaSAndroid Build Coastguard Worker 130*c8dee2aaSAndroid Build Coastguard Worker Token next(); 131*c8dee2aaSAndroid Build Coastguard Worker 132*c8dee2aaSAndroid Build Coastguard Worker struct Checkpoint { 133*c8dee2aaSAndroid Build Coastguard Worker int32_t fOffset; 134*c8dee2aaSAndroid Build Coastguard Worker }; 135*c8dee2aaSAndroid Build Coastguard Worker getCheckpoint()136*c8dee2aaSAndroid Build Coastguard Worker Checkpoint getCheckpoint() const { return {fOffset}; } 137*c8dee2aaSAndroid Build Coastguard Worker rewindToCheckpoint(Checkpoint checkpoint)138*c8dee2aaSAndroid Build Coastguard Worker void rewindToCheckpoint(Checkpoint checkpoint) { fOffset = checkpoint.fOffset; } 139*c8dee2aaSAndroid Build Coastguard Worker 140*c8dee2aaSAndroid Build Coastguard Worker private: 141*c8dee2aaSAndroid Build Coastguard Worker std::string_view fText; 142*c8dee2aaSAndroid Build Coastguard Worker int32_t fOffset; 143*c8dee2aaSAndroid Build Coastguard Worker }; 144*c8dee2aaSAndroid Build Coastguard Worker 145*c8dee2aaSAndroid Build Coastguard Worker } // namespace SkSL 146*c8dee2aaSAndroid Build Coastguard Worker #endif 147