FLOAT_LITERAL = [0-9]*\.[0-9]+([eE][+-]?[0-9]+)?|[0-9]+\.[0-9]*([eE][+-]?[0-9]+)?|[0-9]+([eE][+-]?[0-9]+) INT_LITERAL = [0-9]+|0x[0-9a-fA-F]+ TRUE_LITERAL = "true" FALSE_LITERAL = "false" IF = "if" STATIC_IF = "@if" ELSE = "else" FOR = "for" WHILE = "while" DO = "do" SWITCH = "switch" STATIC_SWITCH = "@switch" CASE = "case" DEFAULT = "default" BREAK = "break" CONTINUE = "continue" DISCARD = "discard" RETURN = "return" IN = "in" OUT = "out" INOUT = "inout" UNIFORM = "uniform" CONST = "const" LOWP = "lowp" MEDIUMP = "mediump" HIGHP = "highp" FLAT = "flat" NOPERSPECTIVE = "noperspective" READONLY = "readonly" WRITEONLY = "writeonly" COHERENT = "coherent" VOLATILE = "volatile" RESTRICT = "restrict" BUFFER = "buffer" HASSIDEEFFECTS = "sk_has_side_effects" STRUCT = "struct" LAYOUT = "layout" PRECISION = "precision" ENUM = "enum" CLASS = "class" IDENTIFIER = [a-zA-Z_$]([0-9]|[a-zA-Z_$])* DIRECTIVE = #[a-zA-Z_$]([0-9]|[a-zA-Z_$])* SECTION = @[a-zA-Z_$]([0-9]|[a-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 = "?" COLONCOLON = "::" COLON = ":" EQ = "=" EQEQ = "==" NEQ = "!=" GT = ">" LT = "<" GTEQ = ">=" LTEQ = "<=" PLUSEQ = "+=" MINUSEQ = "-=" STAREQ = "*=" SLASHEQ = "/=" PERCENTEQ = "%=" SHLEQ = "<<=" SHREQ = ">>=" BITWISEOREQ = "|=" BITWISEXOREQ = "^=" BITWISEANDEQ = "&=" LOGICALOREQ = "||=" LOGICALXOREQ = "^^=" LOGICALANDEQ = "&&=" SEMICOLON = ";" ARROW = "->" WHITESPACE = \s+ LINE_COMMENT = //.* BLOCK_COMMENT = /\*([^*]|\*[^/])*\*/ INVALID = .