1 // ***************** 2 // *** IMPORTANT *** 3 // ***************** 4 // 5 // 1. This file is only used when gn arg sksl_lex is set to true. It is used to regenerate the 6 // SkSLLexer.h and SkSLLexer.cpp files. 7 // 2. Since token IDs are used to identify operators and baked into the .dehydrated.sksl files, 8 // after modifying this file it is likely everything will break until you update the dehydrated 9 // binaries. If things break after updating the lexer, set REHYDRATE in SkSLCompiler.cpp to 0, 10 // rebuild, and then set it back to 1. 11 12 FLOAT_LITERAL = [0-9]*\.[0-9]+([eE][+-]?[0-9]+)?|[0-9]+\.[0-9]*([eE][+-]?[0-9]+)?|[0-9]+([eE][+-]?[0-9]+) 13 INT_LITERAL = [0-9]+|0x[0-9a-fA-F]+ 14 TRUE_LITERAL = "true" 15 FALSE_LITERAL = "false" 16 IF = "if" 17 STATIC_IF = "@if" 18 ELSE = "else" 19 FOR = "for" 20 WHILE = "while" 21 DO = "do" 22 SWITCH = "switch" 23 STATIC_SWITCH = "@switch" 24 CASE = "case" 25 DEFAULT = "default" 26 BREAK = "break" 27 CONTINUE = "continue" 28 DISCARD = "discard" 29 RETURN = "return" 30 NULL_LITERAL = "null" 31 IN = "in" 32 OUT = "out" 33 INOUT = "inout" 34 UNIFORM = "uniform" 35 CONST = "const" 36 FLAT = "flat" 37 NOPERSPECTIVE = "noperspective" 38 READONLY = "readonly" 39 WRITEONLY = "writeonly" 40 COHERENT = "coherent" 41 VOLATILE = "volatile" 42 RESTRICT = "restrict" 43 BUFFER = "buffer" 44 INLINE = "inline" 45 HASSIDEEFFECTS = "sk_has_side_effects" 46 PLS = "__pixel_localEXT" 47 PLSIN = "__pixel_local_inEXT" 48 PLSOUT = "__pixel_local_outEXT" 49 VARYING = "varying" 50 STRUCT = "struct" 51 LAYOUT = "layout" 52 PRECISION = "precision" 53 ENUM = "enum" 54 CLASS = "class" 55 IDENTIFIER = [a-zA-Z_$]([0-9]|[a-zA-Z_$])* 56 DIRECTIVE = #[a-zA-Z_$]([0-9]|[a-zA-Z_$])* 57 SECTION = @[a-zA-Z_$]([0-9]|[a-zA-Z_$])* 58 LPAREN = "(" 59 RPAREN = ")" 60 LBRACE = "{" 61 RBRACE = "}" 62 LBRACKET = "[" 63 RBRACKET = "]" 64 DOT = "." 65 COMMA = "," 66 PLUSPLUS = "++" 67 MINUSMINUS = "--" 68 PLUS = "+" 69 MINUS = "-" 70 STAR = "*" 71 SLASH = "/" 72 PERCENT = "%" 73 SHL = "<<" 74 SHR = ">>" 75 BITWISEOR = "|" 76 BITWISEXOR = "^" 77 BITWISEAND = "&" 78 BITWISENOT = "~" 79 LOGICALOR = "||" 80 LOGICALXOR = "^^" 81 LOGICALAND = "&&" 82 LOGICALNOT = "!" 83 QUESTION = "?" 84 COLONCOLON = "::" 85 COLON = ":" 86 EQ = "=" 87 EQEQ = "==" 88 NEQ = "!=" 89 GT = ">" 90 LT = "<" 91 GTEQ = ">=" 92 LTEQ = "<=" 93 PLUSEQ = "+=" 94 MINUSEQ = "-=" 95 STAREQ = "*=" 96 SLASHEQ = "/=" 97 PERCENTEQ = "%=" 98 SHLEQ = "<<=" 99 SHREQ = ">>=" 100 BITWISEOREQ = "|=" 101 BITWISEXOREQ = "^=" 102 BITWISEANDEQ = "&=" 103 LOGICALOREQ = "||=" 104 LOGICALXOREQ = "^^=" 105 LOGICALANDEQ = "&&=" 106 SEMICOLON = ";" 107 ARROW = "->" 108 WHITESPACE = \s+ 109 LINE_COMMENT = //.* 110 BLOCK_COMMENT = /\*([^*]|\*[^/])*\*/ 111 INVALID = .