2017-09-11 20:50:14 +00:00
|
|
|
/*
|
|
|
|
* 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 <cstddef>
|
|
|
|
#include <cstdint>
|
|
|
|
namespace SkSL {
|
|
|
|
|
|
|
|
struct Token {
|
2020-04-17 16:45:51 +00:00
|
|
|
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,
|
2020-08-20 13:09:14 +00:00
|
|
|
TK_INLINE,
|
2020-04-17 16:45:51 +00:00
|
|
|
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,
|
2021-01-07 21:07:00 +00:00
|
|
|
TK_NONE,
|
2017-09-11 20:50:14 +00:00
|
|
|
};
|
|
|
|
|
2021-01-07 21:07:00 +00:00
|
|
|
Token() : fKind(Kind::TK_NONE), fOffset(-1), fLength(-1) {}
|
2017-09-11 20:50:14 +00:00
|
|
|
|
2018-08-03 15:48:20 +00:00
|
|
|
Token(Kind kind, int32_t offset, int32_t length)
|
|
|
|
: fKind(kind), fOffset(offset), fLength(length) {}
|
2017-09-11 20:50:14 +00:00
|
|
|
|
|
|
|
Kind fKind;
|
|
|
|
int fOffset;
|
|
|
|
int fLength;
|
|
|
|
};
|
|
|
|
|
|
|
|
class Lexer {
|
|
|
|
public:
|
2018-08-03 15:48:20 +00:00
|
|
|
void start(const char* text, int32_t length) {
|
2017-09-11 20:50:14 +00:00
|
|
|
fText = text;
|
|
|
|
fLength = length;
|
|
|
|
fOffset = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
Token next();
|
|
|
|
|
2021-01-22 14:49:45 +00:00
|
|
|
int32_t getCheckpoint() const { return fOffset; }
|
|
|
|
|
|
|
|
void rewindToCheckpoint(int32_t checkpoint) { fOffset = checkpoint; }
|
|
|
|
|
2017-09-11 20:50:14 +00:00
|
|
|
private:
|
|
|
|
const char* fText;
|
2018-08-03 15:48:20 +00:00
|
|
|
int32_t fLength;
|
|
|
|
int32_t fOffset;
|
2017-09-11 20:50:14 +00:00
|
|
|
};
|
|
|
|
|
2020-03-23 14:44:12 +00:00
|
|
|
} // namespace SkSL
|
2017-09-11 20:50:14 +00:00
|
|
|
#endif
|