1FLOAT_LITERAL = [0-9]*\.[0-9]+([eE][+-]?[0-9]+)?|[0-9]+\.[0-9]*([eE][+-]?[0-9]+)?|[0-9]+([eE][+-]?[0-9]+) 2INT_LITERAL = [0-9]+|0x[0-9a-fA-F]+ 3TRUE_LITERAL = "true" 4FALSE_LITERAL = "false" 5IF = "if" 6STATIC_IF = "@if" 7ELSE = "else" 8FOR = "for" 9WHILE = "while" 10DO = "do" 11SWITCH = "switch" 12STATIC_SWITCH = "@switch" 13CASE = "case" 14DEFAULT = "default" 15BREAK = "break" 16CONTINUE = "continue" 17DISCARD = "discard" 18RETURN = "return" 19IN = "in" 20OUT = "out" 21INOUT = "inout" 22UNIFORM = "uniform" 23CONST = "const" 24LOWP = "lowp" 25MEDIUMP = "mediump" 26HIGHP = "highp" 27FLAT = "flat" 28NOPERSPECTIVE = "noperspective" 29READONLY = "readonly" 30WRITEONLY = "writeonly" 31COHERENT = "coherent" 32VOLATILE = "volatile" 33RESTRICT = "restrict" 34BUFFER = "buffer" 35HASSIDEEFFECTS = "sk_has_side_effects" 36STRUCT = "struct" 37LAYOUT = "layout" 38PRECISION = "precision" 39ENUM = "enum" 40CLASS = "class" 41IDENTIFIER = [a-zA-Z_$]([0-9]|[a-zA-Z_$])* 42DIRECTIVE = #[a-zA-Z_$]([0-9]|[a-zA-Z_$])* 43SECTION = @[a-zA-Z_$]([0-9]|[a-zA-Z_$])* 44LPAREN = "(" 45RPAREN = ")" 46LBRACE = "{" 47RBRACE = "}" 48LBRACKET = "[" 49RBRACKET = "]" 50DOT = "." 51COMMA = "," 52PLUSPLUS = "++" 53MINUSMINUS = "--" 54PLUS = "+" 55MINUS = "-" 56STAR = "*" 57SLASH = "/" 58PERCENT = "%" 59SHL = "<<" 60SHR = ">>" 61BITWISEOR = "|" 62BITWISEXOR = "^" 63BITWISEAND = "&" 64BITWISENOT = "~" 65LOGICALOR = "||" 66LOGICALXOR = "^^" 67LOGICALAND = "&&" 68LOGICALNOT = "!" 69QUESTION = "?" 70COLONCOLON = "::" 71COLON = ":" 72EQ = "=" 73EQEQ = "==" 74NEQ = "!=" 75GT = ">" 76LT = "<" 77GTEQ = ">=" 78LTEQ = "<=" 79PLUSEQ = "+=" 80MINUSEQ = "-=" 81STAREQ = "*=" 82SLASHEQ = "/=" 83PERCENTEQ = "%=" 84SHLEQ = "<<=" 85SHREQ = ">>=" 86BITWISEOREQ = "|=" 87BITWISEXOREQ = "^=" 88BITWISEANDEQ = "&=" 89LOGICALOREQ = "||=" 90LOGICALXOREQ = "^^=" 91LOGICALANDEQ = "&&=" 92SEMICOLON = ";" 93ARROW = "->" 94WHITESPACE = \s+ 95LINE_COMMENT = //.* 96BLOCK_COMMENT = /\*([^*]|\*[^/])*\*/ 97INVALID = .