// ***************** // *** IMPORTANT *** // ***************** // // 1. This file is only used when gn arg skia_lex is set to true. It is used to regenerate the // SkSLLexer.h and SkSLLexer.cpp files. // 2. Since token IDs are used to identify operators and baked into the .dehydrated.sksl files, // after modifying this file it is likely everything will break until you update the dehydrated // binaries. If things break after updating the lexer, set REHYDRATE in SkSLCompiler.cpp to 0, // rebuild, and then set it back to 1. FLOAT_LITERAL = [0-9]*\.[0-9]+([eE][+-]?[0-9]+)?|[0-9]+\.[0-9]*([eE][+-]?[0-9]+)?|[0-9]+([eE][+-]?[0-9]+) INT_LITERAL = ([1-9][0-9]*|0[0-7]*|0[xX][0-9a-fA-F]+)[uU]? BAD_OCTAL = (0[0-9]+)[uU]? TRUE_LITERAL = "true" FALSE_LITERAL = "false" IF = "if" ELSE = "else" FOR = "for" WHILE = "while" DO = "do" SWITCH = "switch" CASE = "case" DEFAULT = "default" BREAK = "break" CONTINUE = "continue" DISCARD = "discard" RETURN = "return" IN = "in" OUT = "out" INOUT = "inout" UNIFORM = "uniform" CONST = "const" FLAT = "flat" NOPERSPECTIVE = "noperspective" INLINE = "inline" NOINLINE = "noinline" PURE = "$pure" READONLY = "readonly" WRITEONLY = "writeonly" BUFFER = "buffer" STRUCT = "struct" LAYOUT = "layout" HIGHP = "highp" MEDIUMP = "mediump" LOWP = "lowp" ES3 = "$es3" EXPORT = "$export" WORKGROUP = "workgroup" PIXELLOCAL = "pixel_local" RESERVED = atomic|attribute|varying|precision|invariant|asm|class|union|enum|typedef|template|this|packed|goto|volatile|public|static|extern|external|interface|long|double|fixed|unsigned|superp|input|output|hvec[234]|dvec[234]|fvec[234]|sampler[13]D|sampler[12]DShadow|sampler3DRect|sampler2DRectShadow|samplerCube|sizeof|cast|namespace|using|gl_[0-9a-zA-Z_]* PRIVATE_IDENTIFIER = $[0-9a-zA-Z_]* IDENTIFIER = [a-zA-Z_][0-9a-zA-Z_]* DIRECTIVE = #[a-zA-Z_][0-9a-zA-Z_]* LPAREN = "(" RPAREN = ")" LBRACE = "{" RBRACE = "}" LBRACKET = "[" RBRACKET = "]" DOT = "." COMMA = "," PLUSPLUS = "++" MINUSMINUS = "--" PLUS = "+" MINUS = "-" STAR = "*" SLASH = "/" PERCENT = "%" SHL = "<<" SHR = ">>" BITWISEOR = "|" BITWISEXOR = "^" BITWISEAND = "&" BITWISENOT = "~" LOGICALOR = "||" LOGICALXOR = "^^" LOGICALAND = "&&" LOGICALNOT = "!" QUESTION = "?" COLON = ":" EQ = "=" EQEQ = "==" NEQ = "!=" GT = ">" LT = "<" GTEQ = ">=" LTEQ = "<=" PLUSEQ = "+=" MINUSEQ = "-=" STAREQ = "*=" SLASHEQ = "/=" PERCENTEQ = "%=" SHLEQ = "<<=" SHREQ = ">>=" BITWISEOREQ = "|=" BITWISEXOREQ = "^=" BITWISEANDEQ = "&=" SEMICOLON = ";" WHITESPACE = \s+ LINE_COMMENT = //.* BLOCK_COMMENT = /\*([^*]|\*[^/])*\*/ INVALID = .