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