/* * 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 #include namespace SkSL { struct Token { enum class Kind { TK_END_OF_FILE, TK_FLOAT_LITERAL, TK_INT_LITERAL, TK_TRUE_LITERAL, TK_FALSE_LITERAL, TK_IF, TK_STATIC_IF, TK_ELSE, TK_FOR, TK_WHILE, TK_DO, TK_SWITCH, TK_STATIC_SWITCH, TK_CASE, TK_DEFAULT, TK_BREAK, TK_CONTINUE, TK_DISCARD, TK_RETURN, TK_IN, TK_OUT, TK_INOUT, TK_UNIFORM, TK_CONST, TK_FLAT, TK_NOPERSPECTIVE, TK_INLINE, TK_HASSIDEEFFECTS, TK_VARYING, TK_STRUCT, TK_LAYOUT, TK_ENUM, TK_CLASS, TK_IDENTIFIER, TK_DIRECTIVE, TK_SECTION, TK_LPAREN, TK_RPAREN, TK_LBRACE, TK_RBRACE, TK_LBRACKET, TK_RBRACKET, TK_DOT, TK_COMMA, TK_PLUSPLUS, TK_MINUSMINUS, TK_PLUS, TK_MINUS, TK_STAR, TK_SLASH, TK_PERCENT, TK_SHL, TK_SHR, TK_BITWISEOR, TK_BITWISEXOR, TK_BITWISEAND, TK_BITWISENOT, TK_LOGICALOR, TK_LOGICALXOR, TK_LOGICALAND, TK_LOGICALNOT, TK_QUESTION, TK_COLONCOLON, TK_COLON, TK_EQ, TK_EQEQ, TK_NEQ, TK_GT, TK_LT, TK_GTEQ, TK_LTEQ, TK_PLUSEQ, TK_MINUSEQ, TK_STAREQ, TK_SLASHEQ, TK_PERCENTEQ, TK_SHLEQ, TK_SHREQ, TK_BITWISEOREQ, TK_BITWISEXOREQ, TK_BITWISEANDEQ, TK_SEMICOLON, TK_ARROW, TK_WHITESPACE, TK_LINE_COMMENT, TK_BLOCK_COMMENT, TK_INVALID, TK_NONE, }; Token() : fKind(Kind::TK_NONE), fOffset(-1), fLength(-1) {} Token(Kind kind, int32_t offset, int32_t length) : fKind(kind), fOffset(offset), fLength(length) {} Kind fKind; int fOffset; int fLength; }; class Lexer { public: void start(const char* text, int32_t length) { fText = text; fLength = length; fOffset = 0; } Token next(); int32_t getCheckpoint() const { return fOffset; } void rewindToCheckpoint(int32_t checkpoint) { fOffset = checkpoint; } private: const char* fText; int32_t fLength; int32_t fOffset; }; } // namespace SkSL #endif