SkSLLexer.h 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  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. struct Token {
  16. enum Kind {
  17. #undef END_OF_FILE
  18. END_OF_FILE,
  19. #undef FLOAT_LITERAL
  20. FLOAT_LITERAL,
  21. #undef INT_LITERAL
  22. INT_LITERAL,
  23. #undef TRUE_LITERAL
  24. TRUE_LITERAL,
  25. #undef FALSE_LITERAL
  26. FALSE_LITERAL,
  27. #undef IF
  28. IF,
  29. #undef STATIC_IF
  30. STATIC_IF,
  31. #undef ELSE
  32. ELSE,
  33. #undef FOR
  34. FOR,
  35. #undef WHILE
  36. WHILE,
  37. #undef DO
  38. DO,
  39. #undef SWITCH
  40. SWITCH,
  41. #undef STATIC_SWITCH
  42. STATIC_SWITCH,
  43. #undef CASE
  44. CASE,
  45. #undef DEFAULT
  46. DEFAULT,
  47. #undef BREAK
  48. BREAK,
  49. #undef CONTINUE
  50. CONTINUE,
  51. #undef DISCARD
  52. DISCARD,
  53. #undef RETURN
  54. RETURN,
  55. #undef NULL_LITERAL
  56. NULL_LITERAL,
  57. #undef IN
  58. IN,
  59. #undef OUT
  60. OUT,
  61. #undef INOUT
  62. INOUT,
  63. #undef UNIFORM
  64. UNIFORM,
  65. #undef CONST
  66. CONST,
  67. #undef FLAT
  68. FLAT,
  69. #undef NOPERSPECTIVE
  70. NOPERSPECTIVE,
  71. #undef READONLY
  72. READONLY,
  73. #undef WRITEONLY
  74. WRITEONLY,
  75. #undef COHERENT
  76. COHERENT,
  77. #undef VOLATILE
  78. VOLATILE,
  79. #undef RESTRICT
  80. RESTRICT,
  81. #undef BUFFER
  82. BUFFER,
  83. #undef HASSIDEEFFECTS
  84. HASSIDEEFFECTS,
  85. #undef PLS
  86. PLS,
  87. #undef PLSIN
  88. PLSIN,
  89. #undef PLSOUT
  90. PLSOUT,
  91. #undef STRUCT
  92. STRUCT,
  93. #undef LAYOUT
  94. LAYOUT,
  95. #undef PRECISION
  96. PRECISION,
  97. #undef ENUM
  98. ENUM,
  99. #undef CLASS
  100. CLASS,
  101. #undef IDENTIFIER
  102. IDENTIFIER,
  103. #undef DIRECTIVE
  104. DIRECTIVE,
  105. #undef SECTION
  106. SECTION,
  107. #undef LPAREN
  108. LPAREN,
  109. #undef RPAREN
  110. RPAREN,
  111. #undef LBRACE
  112. LBRACE,
  113. #undef RBRACE
  114. RBRACE,
  115. #undef LBRACKET
  116. LBRACKET,
  117. #undef RBRACKET
  118. RBRACKET,
  119. #undef DOT
  120. DOT,
  121. #undef COMMA
  122. COMMA,
  123. #undef PLUSPLUS
  124. PLUSPLUS,
  125. #undef MINUSMINUS
  126. MINUSMINUS,
  127. #undef PLUS
  128. PLUS,
  129. #undef MINUS
  130. MINUS,
  131. #undef STAR
  132. STAR,
  133. #undef SLASH
  134. SLASH,
  135. #undef PERCENT
  136. PERCENT,
  137. #undef SHL
  138. SHL,
  139. #undef SHR
  140. SHR,
  141. #undef BITWISEOR
  142. BITWISEOR,
  143. #undef BITWISEXOR
  144. BITWISEXOR,
  145. #undef BITWISEAND
  146. BITWISEAND,
  147. #undef BITWISENOT
  148. BITWISENOT,
  149. #undef LOGICALOR
  150. LOGICALOR,
  151. #undef LOGICALXOR
  152. LOGICALXOR,
  153. #undef LOGICALAND
  154. LOGICALAND,
  155. #undef LOGICALNOT
  156. LOGICALNOT,
  157. #undef QUESTION
  158. QUESTION,
  159. #undef COLONCOLON
  160. COLONCOLON,
  161. #undef COLON
  162. COLON,
  163. #undef EQ
  164. EQ,
  165. #undef EQEQ
  166. EQEQ,
  167. #undef NEQ
  168. NEQ,
  169. #undef GT
  170. GT,
  171. #undef LT
  172. LT,
  173. #undef GTEQ
  174. GTEQ,
  175. #undef LTEQ
  176. LTEQ,
  177. #undef PLUSEQ
  178. PLUSEQ,
  179. #undef MINUSEQ
  180. MINUSEQ,
  181. #undef STAREQ
  182. STAREQ,
  183. #undef SLASHEQ
  184. SLASHEQ,
  185. #undef PERCENTEQ
  186. PERCENTEQ,
  187. #undef SHLEQ
  188. SHLEQ,
  189. #undef SHREQ
  190. SHREQ,
  191. #undef BITWISEOREQ
  192. BITWISEOREQ,
  193. #undef BITWISEXOREQ
  194. BITWISEXOREQ,
  195. #undef BITWISEANDEQ
  196. BITWISEANDEQ,
  197. #undef LOGICALOREQ
  198. LOGICALOREQ,
  199. #undef LOGICALXOREQ
  200. LOGICALXOREQ,
  201. #undef LOGICALANDEQ
  202. LOGICALANDEQ,
  203. #undef SEMICOLON
  204. SEMICOLON,
  205. #undef ARROW
  206. ARROW,
  207. #undef WHITESPACE
  208. WHITESPACE,
  209. #undef LINE_COMMENT
  210. LINE_COMMENT,
  211. #undef BLOCK_COMMENT
  212. BLOCK_COMMENT,
  213. #undef INVALID
  214. INVALID,
  215. };
  216. Token() : fKind(Kind::INVALID), fOffset(-1), fLength(-1) {}
  217. Token(Kind kind, int32_t offset, int32_t length)
  218. : fKind(kind), fOffset(offset), fLength(length) {}
  219. Kind fKind;
  220. int fOffset;
  221. int fLength;
  222. };
  223. class Lexer {
  224. public:
  225. void start(const char* text, int32_t length) {
  226. fText = text;
  227. fLength = length;
  228. fOffset = 0;
  229. }
  230. Token next();
  231. private:
  232. const char* fText;
  233. int32_t fLength;
  234. int32_t fOffset;
  235. };
  236. } // namespace
  237. #endif