xref: /aosp_15_r20/external/skia/src/sksl/lex/sksl.lex (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker // *****************
2*c8dee2aaSAndroid Build Coastguard Worker // *** IMPORTANT ***
3*c8dee2aaSAndroid Build Coastguard Worker // *****************
4*c8dee2aaSAndroid Build Coastguard Worker //
5*c8dee2aaSAndroid Build Coastguard Worker // 1. This file is only used when gn arg skia_lex is set to true. It is used to regenerate the
6*c8dee2aaSAndroid Build Coastguard Worker //    SkSLLexer.h and SkSLLexer.cpp files.
7*c8dee2aaSAndroid Build Coastguard Worker // 2. Since token IDs are used to identify operators and baked into the .dehydrated.sksl files,
8*c8dee2aaSAndroid Build Coastguard Worker //    after modifying this file it is likely everything will break until you update the dehydrated
9*c8dee2aaSAndroid Build Coastguard Worker //    binaries. If things break after updating the lexer, set REHYDRATE in SkSLCompiler.cpp to 0,
10*c8dee2aaSAndroid Build Coastguard Worker //    rebuild, and then set it back to 1.
11*c8dee2aaSAndroid Build Coastguard Worker 
12*c8dee2aaSAndroid Build Coastguard Worker FLOAT_LITERAL  = [0-9]*\.[0-9]+([eE][+-]?[0-9]+)?|[0-9]+\.[0-9]*([eE][+-]?[0-9]+)?|[0-9]+([eE][+-]?[0-9]+)
13*c8dee2aaSAndroid Build Coastguard Worker INT_LITERAL    = ([1-9][0-9]*|0[0-7]*|0[xX][0-9a-fA-F]+)[uU]?
14*c8dee2aaSAndroid Build Coastguard Worker BAD_OCTAL      = (0[0-9]+)[uU]?
15*c8dee2aaSAndroid Build Coastguard Worker TRUE_LITERAL   = "true"
16*c8dee2aaSAndroid Build Coastguard Worker FALSE_LITERAL  = "false"
17*c8dee2aaSAndroid Build Coastguard Worker IF             = "if"
18*c8dee2aaSAndroid Build Coastguard Worker ELSE           = "else"
19*c8dee2aaSAndroid Build Coastguard Worker FOR            = "for"
20*c8dee2aaSAndroid Build Coastguard Worker WHILE          = "while"
21*c8dee2aaSAndroid Build Coastguard Worker DO             = "do"
22*c8dee2aaSAndroid Build Coastguard Worker SWITCH         = "switch"
23*c8dee2aaSAndroid Build Coastguard Worker CASE           = "case"
24*c8dee2aaSAndroid Build Coastguard Worker DEFAULT        = "default"
25*c8dee2aaSAndroid Build Coastguard Worker BREAK          = "break"
26*c8dee2aaSAndroid Build Coastguard Worker CONTINUE       = "continue"
27*c8dee2aaSAndroid Build Coastguard Worker DISCARD        = "discard"
28*c8dee2aaSAndroid Build Coastguard Worker RETURN         = "return"
29*c8dee2aaSAndroid Build Coastguard Worker IN             = "in"
30*c8dee2aaSAndroid Build Coastguard Worker OUT            = "out"
31*c8dee2aaSAndroid Build Coastguard Worker INOUT          = "inout"
32*c8dee2aaSAndroid Build Coastguard Worker UNIFORM        = "uniform"
33*c8dee2aaSAndroid Build Coastguard Worker CONST          = "const"
34*c8dee2aaSAndroid Build Coastguard Worker FLAT           = "flat"
35*c8dee2aaSAndroid Build Coastguard Worker NOPERSPECTIVE  = "noperspective"
36*c8dee2aaSAndroid Build Coastguard Worker INLINE         = "inline"
37*c8dee2aaSAndroid Build Coastguard Worker NOINLINE       = "noinline"
38*c8dee2aaSAndroid Build Coastguard Worker PURE           = "$pure"
39*c8dee2aaSAndroid Build Coastguard Worker READONLY       = "readonly"
40*c8dee2aaSAndroid Build Coastguard Worker WRITEONLY      = "writeonly"
41*c8dee2aaSAndroid Build Coastguard Worker BUFFER         = "buffer"
42*c8dee2aaSAndroid Build Coastguard Worker STRUCT         = "struct"
43*c8dee2aaSAndroid Build Coastguard Worker LAYOUT         = "layout"
44*c8dee2aaSAndroid Build Coastguard Worker HIGHP          = "highp"
45*c8dee2aaSAndroid Build Coastguard Worker MEDIUMP        = "mediump"
46*c8dee2aaSAndroid Build Coastguard Worker LOWP           = "lowp"
47*c8dee2aaSAndroid Build Coastguard Worker ES3            = "$es3"
48*c8dee2aaSAndroid Build Coastguard Worker EXPORT         = "$export"
49*c8dee2aaSAndroid Build Coastguard Worker WORKGROUP      = "workgroup"
50*c8dee2aaSAndroid Build Coastguard Worker PIXELLOCAL     = "pixel_local"
51*c8dee2aaSAndroid Build Coastguard Worker 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]|dmat[234]|dmat[234]x[234]|fvec[234]|(iimage|image|isampler|itexture|uimage|usampler|utexture)(1D|2D|3D|1DArray|2DArray|2DRect|2DMS|2DMSArray|Buffer|Cube|CubeArray)|(sampler|texture)(1D|1DArray|2DArray|2DMS|2DMSArray|3D|Buffer|Cube|CubeArray)|sampler(1DArrayShadow|1DShadow|2DArrayShadow|2DShadow|2DRectShadow|3DRect|CubeArrayShadow|CubeShadow|Shadow)|[iu]subpassInput(MS)?|sizeof|cast|namespace|using|gl_[0-9a-zA-Z_]*
52*c8dee2aaSAndroid Build Coastguard Worker PRIVATE_IDENTIFIER = $[0-9a-zA-Z_]*
53*c8dee2aaSAndroid Build Coastguard Worker IDENTIFIER     = [a-zA-Z_][0-9a-zA-Z_]*
54*c8dee2aaSAndroid Build Coastguard Worker DIRECTIVE      = #[a-zA-Z_][0-9a-zA-Z_]*
55*c8dee2aaSAndroid Build Coastguard Worker LPAREN         = "("
56*c8dee2aaSAndroid Build Coastguard Worker RPAREN         = ")"
57*c8dee2aaSAndroid Build Coastguard Worker LBRACE         = "{"
58*c8dee2aaSAndroid Build Coastguard Worker RBRACE         = "}"
59*c8dee2aaSAndroid Build Coastguard Worker LBRACKET       = "["
60*c8dee2aaSAndroid Build Coastguard Worker RBRACKET       = "]"
61*c8dee2aaSAndroid Build Coastguard Worker DOT            = "."
62*c8dee2aaSAndroid Build Coastguard Worker COMMA          = ","
63*c8dee2aaSAndroid Build Coastguard Worker PLUSPLUS       = "++"
64*c8dee2aaSAndroid Build Coastguard Worker MINUSMINUS     = "--"
65*c8dee2aaSAndroid Build Coastguard Worker PLUS           = "+"
66*c8dee2aaSAndroid Build Coastguard Worker MINUS          = "-"
67*c8dee2aaSAndroid Build Coastguard Worker STAR           = "*"
68*c8dee2aaSAndroid Build Coastguard Worker SLASH          = "/"
69*c8dee2aaSAndroid Build Coastguard Worker PERCENT        = "%"
70*c8dee2aaSAndroid Build Coastguard Worker SHL            = "<<"
71*c8dee2aaSAndroid Build Coastguard Worker SHR            = ">>"
72*c8dee2aaSAndroid Build Coastguard Worker BITWISEOR      = "|"
73*c8dee2aaSAndroid Build Coastguard Worker BITWISEXOR     = "^"
74*c8dee2aaSAndroid Build Coastguard Worker BITWISEAND     = "&"
75*c8dee2aaSAndroid Build Coastguard Worker BITWISENOT     = "~"
76*c8dee2aaSAndroid Build Coastguard Worker LOGICALOR      = "||"
77*c8dee2aaSAndroid Build Coastguard Worker LOGICALXOR     = "^^"
78*c8dee2aaSAndroid Build Coastguard Worker LOGICALAND     = "&&"
79*c8dee2aaSAndroid Build Coastguard Worker LOGICALNOT     = "!"
80*c8dee2aaSAndroid Build Coastguard Worker QUESTION       = "?"
81*c8dee2aaSAndroid Build Coastguard Worker COLON          = ":"
82*c8dee2aaSAndroid Build Coastguard Worker EQ             = "="
83*c8dee2aaSAndroid Build Coastguard Worker EQEQ           = "=="
84*c8dee2aaSAndroid Build Coastguard Worker NEQ            = "!="
85*c8dee2aaSAndroid Build Coastguard Worker GT             = ">"
86*c8dee2aaSAndroid Build Coastguard Worker LT             = "<"
87*c8dee2aaSAndroid Build Coastguard Worker GTEQ           = ">="
88*c8dee2aaSAndroid Build Coastguard Worker LTEQ           = "<="
89*c8dee2aaSAndroid Build Coastguard Worker PLUSEQ         = "+="
90*c8dee2aaSAndroid Build Coastguard Worker MINUSEQ        = "-="
91*c8dee2aaSAndroid Build Coastguard Worker STAREQ         = "*="
92*c8dee2aaSAndroid Build Coastguard Worker SLASHEQ        = "/="
93*c8dee2aaSAndroid Build Coastguard Worker PERCENTEQ      = "%="
94*c8dee2aaSAndroid Build Coastguard Worker SHLEQ          = "<<="
95*c8dee2aaSAndroid Build Coastguard Worker SHREQ          = ">>="
96*c8dee2aaSAndroid Build Coastguard Worker BITWISEOREQ    = "|="
97*c8dee2aaSAndroid Build Coastguard Worker BITWISEXOREQ   = "^="
98*c8dee2aaSAndroid Build Coastguard Worker BITWISEANDEQ   = "&="
99*c8dee2aaSAndroid Build Coastguard Worker SEMICOLON      = ";"
100*c8dee2aaSAndroid Build Coastguard Worker WHITESPACE     = \s+
101*c8dee2aaSAndroid Build Coastguard Worker LINE_COMMENT   = //.*
102*c8dee2aaSAndroid Build Coastguard Worker BLOCK_COMMENT  = /\*([^*]|\*[^/])*\*/
103*c8dee2aaSAndroid Build Coastguard Worker INVALID        = .
104