annotate vendor/github.com/alecthomas/chroma/v2/lexers/haxe.go @ 66:787b5ee0289d draft

Use vendored modules Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>
author yakumo.izuru
date Sun, 23 Jul 2023 13:18:53 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
66
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
1 package lexers
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
2
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
3 import (
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
4 . "github.com/alecthomas/chroma/v2" // nolint
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
5 )
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
6
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
7 // Haxe lexer.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
8 var Haxe = Register(MustNewLexer(
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
9 &Config{
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
10 Name: "Haxe",
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
11 Aliases: []string{"hx", "haxe", "hxsl"},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
12 Filenames: []string{"*.hx", "*.hxsl"},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
13 MimeTypes: []string{"text/haxe", "text/x-haxe", "text/x-hx"},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
14 DotAll: true,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
15 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
16 haxeRules,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
17 ))
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
18
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
19 func haxeRules() Rules {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
20 return Rules{
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
21 "root": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
22 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
23 Include("meta"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
24 {`(?:package)\b`, KeywordNamespace, Push("semicolon", "package")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
25 {`(?:import)\b`, KeywordNamespace, Push("semicolon", "import")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
26 {`(?:using)\b`, KeywordNamespace, Push("semicolon", "using")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
27 {`(?:extern|private)\b`, KeywordDeclaration, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
28 {`(?:abstract)\b`, KeywordDeclaration, Push("abstract")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
29 {`(?:class|interface)\b`, KeywordDeclaration, Push("class")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
30 {`(?:enum)\b`, KeywordDeclaration, Push("enum")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
31 {`(?:typedef)\b`, KeywordDeclaration, Push("typedef")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
32 {`(?=.)`, Text, Push("expr-statement")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
33 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
34 "spaces": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
35 {`\s+`, Text, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
36 {`//[^\n\r]*`, CommentSingle, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
37 {`/\*.*?\*/`, CommentMultiline, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
38 {`(#)(if|elseif|else|end|error)\b`, CommentPreproc, MutatorFunc(haxePreProcMutator)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
39 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
40 "string-single-interpol": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
41 {`\$\{`, LiteralStringInterpol, Push("string-interpol-close", "expr")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
42 {`\$\$`, LiteralStringEscape, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
43 {`\$(?=(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+))`, LiteralStringInterpol, Push("ident")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
44 Include("string-single"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
45 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
46 "string-single": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
47 {`'`, LiteralStringSingle, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
48 {`\\.`, LiteralStringEscape, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
49 {`.`, LiteralStringSingle, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
50 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
51 "string-double": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
52 {`"`, LiteralStringDouble, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
53 {`\\.`, LiteralStringEscape, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
54 {`.`, LiteralStringDouble, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
55 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
56 "string-interpol-close": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
57 {`\$(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, LiteralStringInterpol, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
58 {`\}`, LiteralStringInterpol, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
59 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
60 "package": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
61 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
62 {`(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, NameNamespace, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
63 {`\.`, Punctuation, Push("import-ident")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
64 Default(Pop(1)),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
65 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
66 "import": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
67 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
68 {`(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, NameNamespace, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
69 {`\*`, Keyword, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
70 {`\.`, Punctuation, Push("import-ident")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
71 {`in`, KeywordNamespace, Push("ident")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
72 Default(Pop(1)),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
73 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
74 "import-ident": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
75 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
76 {`\*`, Keyword, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
77 {`(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, NameNamespace, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
78 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
79 "using": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
80 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
81 {`(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, NameNamespace, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
82 {`\.`, Punctuation, Push("import-ident")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
83 Default(Pop(1)),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
84 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
85 "preproc-error": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
86 {`\s+`, CommentPreproc, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
87 {`'`, LiteralStringSingle, Push("#pop", "string-single")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
88 {`"`, LiteralStringDouble, Push("#pop", "string-double")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
89 Default(Pop(1)),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
90 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
91 "preproc-expr": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
92 {`\s+`, CommentPreproc, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
93 {`\!`, CommentPreproc, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
94 {`\(`, CommentPreproc, Push("#pop", "preproc-parenthesis")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
95 {`(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, CommentPreproc, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
96 {`\.[0-9]+`, LiteralNumberFloat, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
97 {`[0-9]+[eE][+\-]?[0-9]+`, LiteralNumberFloat, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
98 {`[0-9]+\.[0-9]*[eE][+\-]?[0-9]+`, LiteralNumberFloat, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
99 {`[0-9]+\.[0-9]+`, LiteralNumberFloat, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
100 {`[0-9]+\.(?!(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)|\.\.)`, LiteralNumberFloat, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
101 {`0x[0-9a-fA-F]+`, LiteralNumberHex, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
102 {`[0-9]+`, LiteralNumberInteger, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
103 {`'`, LiteralStringSingle, Push("#pop", "string-single")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
104 {`"`, LiteralStringDouble, Push("#pop", "string-double")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
105 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
106 "preproc-parenthesis": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
107 {`\s+`, CommentPreproc, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
108 {`\)`, CommentPreproc, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
109 Default(Push("preproc-expr-in-parenthesis")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
110 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
111 "preproc-expr-chain": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
112 {`\s+`, CommentPreproc, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
113 {`(?:%=|&=|\|=|\^=|\+=|\-=|\*=|/=|<<=|>\s*>\s*=|>\s*>\s*>\s*=|==|!=|<=|>\s*=|&&|\|\||<<|>>>|>\s*>|\.\.\.|<|>|%|&|\||\^|\+|\*|/|\-|=>|=)`, CommentPreproc, Push("#pop", "preproc-expr-in-parenthesis")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
114 Default(Pop(1)),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
115 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
116 "preproc-expr-in-parenthesis": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
117 {`\s+`, CommentPreproc, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
118 {`\!`, CommentPreproc, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
119 {`\(`, CommentPreproc, Push("#pop", "preproc-expr-chain", "preproc-parenthesis")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
120 {`(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, CommentPreproc, Push("#pop", "preproc-expr-chain")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
121 {`\.[0-9]+`, LiteralNumberFloat, Push("#pop", "preproc-expr-chain")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
122 {`[0-9]+[eE][+\-]?[0-9]+`, LiteralNumberFloat, Push("#pop", "preproc-expr-chain")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
123 {`[0-9]+\.[0-9]*[eE][+\-]?[0-9]+`, LiteralNumberFloat, Push("#pop", "preproc-expr-chain")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
124 {`[0-9]+\.[0-9]+`, LiteralNumberFloat, Push("#pop", "preproc-expr-chain")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
125 {`[0-9]+\.(?!(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)|\.\.)`, LiteralNumberFloat, Push("#pop", "preproc-expr-chain")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
126 {`0x[0-9a-fA-F]+`, LiteralNumberHex, Push("#pop", "preproc-expr-chain")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
127 {`[0-9]+`, LiteralNumberInteger, Push("#pop", "preproc-expr-chain")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
128 {`'`, LiteralStringSingle, Push("#pop", "preproc-expr-chain", "string-single")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
129 {`"`, LiteralStringDouble, Push("#pop", "preproc-expr-chain", "string-double")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
130 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
131 "abstract": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
132 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
133 Default(Pop(1), Push("abstract-body"), Push("abstract-relation"), Push("abstract-opaque"), Push("type-param-constraint"), Push("type-name")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
134 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
135 "abstract-body": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
136 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
137 {`\{`, Punctuation, Push("#pop", "class-body")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
138 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
139 "abstract-opaque": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
140 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
141 {`\(`, Punctuation, Push("#pop", "parenthesis-close", "type")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
142 Default(Pop(1)),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
143 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
144 "abstract-relation": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
145 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
146 {`(?:to|from)`, KeywordDeclaration, Push("type")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
147 {`,`, Punctuation, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
148 Default(Pop(1)),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
149 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
150 "meta": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
151 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
152 {`@`, NameDecorator, Push("meta-body", "meta-ident", "meta-colon")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
153 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
154 "meta-colon": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
155 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
156 {`:`, NameDecorator, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
157 Default(Pop(1)),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
158 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
159 "meta-ident": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
160 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
161 {`(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, NameDecorator, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
162 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
163 "meta-body": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
164 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
165 {`\(`, NameDecorator, Push("#pop", "meta-call")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
166 Default(Pop(1)),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
167 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
168 "meta-call": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
169 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
170 {`\)`, NameDecorator, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
171 Default(Pop(1), Push("meta-call-sep"), Push("expr")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
172 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
173 "meta-call-sep": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
174 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
175 {`\)`, NameDecorator, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
176 {`,`, Punctuation, Push("#pop", "meta-call")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
177 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
178 "typedef": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
179 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
180 Default(Pop(1), Push("typedef-body"), Push("type-param-constraint"), Push("type-name")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
181 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
182 "typedef-body": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
183 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
184 {`=`, Operator, Push("#pop", "optional-semicolon", "type")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
185 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
186 "enum": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
187 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
188 Default(Pop(1), Push("enum-body"), Push("bracket-open"), Push("type-param-constraint"), Push("type-name")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
189 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
190 "enum-body": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
191 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
192 Include("meta"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
193 {`\}`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
194 {`(?!(?:function|class|static|var|if|else|while|do|for|break|return|continue|extends|implements|import|switch|case|default|public|private|try|untyped|catch|new|this|throw|extern|enum|in|interface|cast|override|dynamic|typedef|package|inline|using|null|true|false|abstract)\b)(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, Name, Push("enum-member", "type-param-constraint")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
195 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
196 "enum-member": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
197 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
198 {`\(`, Punctuation, Push("#pop", "semicolon", "flag", "function-param")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
199 Default(Pop(1), Push("semicolon"), Push("flag")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
200 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
201 "class": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
202 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
203 Default(Pop(1), Push("class-body"), Push("bracket-open"), Push("extends"), Push("type-param-constraint"), Push("type-name")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
204 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
205 "extends": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
206 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
207 {`(?:extends|implements)\b`, KeywordDeclaration, Push("type")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
208 {`,`, Punctuation, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
209 Default(Pop(1)),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
210 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
211 "bracket-open": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
212 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
213 {`\{`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
214 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
215 "bracket-close": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
216 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
217 {`\}`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
218 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
219 "class-body": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
220 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
221 Include("meta"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
222 {`\}`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
223 {`(?:static|public|private|override|dynamic|inline|macro)\b`, KeywordDeclaration, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
224 Default(Push("class-member")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
225 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
226 "class-member": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
227 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
228 {`(var)\b`, KeywordDeclaration, Push("#pop", "optional-semicolon", "var")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
229 {`(function)\b`, KeywordDeclaration, Push("#pop", "optional-semicolon", "class-method")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
230 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
231 "function-local": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
232 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
233 {`(?!(?:function|class|static|var|if|else|while|do|for|break|return|continue|extends|implements|import|switch|case|default|public|private|try|untyped|catch|new|this|throw|extern|enum|in|interface|cast|override|dynamic|typedef|package|inline|using|null|true|false|abstract)\b)(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, NameFunction, Push("#pop", "optional-expr", "flag", "function-param", "parenthesis-open", "type-param-constraint")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
234 Default(Pop(1), Push("optional-expr"), Push("flag"), Push("function-param"), Push("parenthesis-open"), Push("type-param-constraint")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
235 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
236 "optional-expr": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
237 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
238 Include("expr"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
239 Default(Pop(1)),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
240 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
241 "class-method": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
242 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
243 {`(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, NameFunction, Push("#pop", "optional-expr", "flag", "function-param", "parenthesis-open", "type-param-constraint")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
244 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
245 "function-param": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
246 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
247 {`\)`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
248 {`\?`, Punctuation, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
249 {`(?!(?:function|class|static|var|if|else|while|do|for|break|return|continue|extends|implements|import|switch|case|default|public|private|try|untyped|catch|new|this|throw|extern|enum|in|interface|cast|override|dynamic|typedef|package|inline|using|null|true|false|abstract)\b)(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, Name, Push("#pop", "function-param-sep", "assign", "flag")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
250 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
251 "function-param-sep": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
252 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
253 {`\)`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
254 {`,`, Punctuation, Push("#pop", "function-param")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
255 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
256 "prop-get-set": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
257 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
258 {`\(`, Punctuation, Push("#pop", "parenthesis-close", "prop-get-set-opt", "comma", "prop-get-set-opt")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
259 Default(Pop(1)),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
260 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
261 "prop-get-set-opt": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
262 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
263 {`(?:default|null|never|dynamic|get|set)\b`, Keyword, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
264 {`(?!(?:function|class|static|var|if|else|while|do|for|break|return|continue|extends|implements|import|switch|case|default|public|private|try|untyped|catch|new|this|throw|extern|enum|in|interface|cast|override|dynamic|typedef|package|inline|using|null|true|false|abstract)\b)(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, Text, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
265 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
266 "expr-statement": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
267 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
268 Default(Pop(1), Push("optional-semicolon"), Push("expr")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
269 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
270 "expr": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
271 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
272 {`@`, NameDecorator, Push("#pop", "optional-expr", "meta-body", "meta-ident", "meta-colon")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
273 {`(?:\+\+|\-\-|~(?!/)|!|\-)`, Operator, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
274 {`\(`, Punctuation, Push("#pop", "expr-chain", "parenthesis")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
275 {`(?:static|public|private|override|dynamic|inline)\b`, KeywordDeclaration, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
276 {`(?:function)\b`, KeywordDeclaration, Push("#pop", "expr-chain", "function-local")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
277 {`\{`, Punctuation, Push("#pop", "expr-chain", "bracket")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
278 {`(?:true|false|null)\b`, KeywordConstant, Push("#pop", "expr-chain")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
279 {`(?:this)\b`, Keyword, Push("#pop", "expr-chain")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
280 {`(?:cast)\b`, Keyword, Push("#pop", "expr-chain", "cast")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
281 {`(?:try)\b`, Keyword, Push("#pop", "catch", "expr")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
282 {`(?:var)\b`, KeywordDeclaration, Push("#pop", "var")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
283 {`(?:new)\b`, Keyword, Push("#pop", "expr-chain", "new")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
284 {`(?:switch)\b`, Keyword, Push("#pop", "switch")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
285 {`(?:if)\b`, Keyword, Push("#pop", "if")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
286 {`(?:do)\b`, Keyword, Push("#pop", "do")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
287 {`(?:while)\b`, Keyword, Push("#pop", "while")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
288 {`(?:for)\b`, Keyword, Push("#pop", "for")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
289 {`(?:untyped|throw)\b`, Keyword, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
290 {`(?:return)\b`, Keyword, Push("#pop", "optional-expr")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
291 {`(?:macro)\b`, Keyword, Push("#pop", "macro")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
292 {`(?:continue|break)\b`, Keyword, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
293 {`(?:\$\s*[a-z]\b|\$(?!(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)))`, Name, Push("#pop", "dollar")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
294 {`(?!(?:function|class|static|var|if|else|while|do|for|break|return|continue|extends|implements|import|switch|case|default|public|private|try|untyped|catch|new|this|throw|extern|enum|in|interface|cast|override|dynamic|typedef|package|inline|using|null|true|false|abstract)\b)(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, Name, Push("#pop", "expr-chain")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
295 {`\.[0-9]+`, LiteralNumberFloat, Push("#pop", "expr-chain")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
296 {`[0-9]+[eE][+\-]?[0-9]+`, LiteralNumberFloat, Push("#pop", "expr-chain")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
297 {`[0-9]+\.[0-9]*[eE][+\-]?[0-9]+`, LiteralNumberFloat, Push("#pop", "expr-chain")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
298 {`[0-9]+\.[0-9]+`, LiteralNumberFloat, Push("#pop", "expr-chain")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
299 {`[0-9]+\.(?!(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)|\.\.)`, LiteralNumberFloat, Push("#pop", "expr-chain")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
300 {`0x[0-9a-fA-F]+`, LiteralNumberHex, Push("#pop", "expr-chain")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
301 {`[0-9]+`, LiteralNumberInteger, Push("#pop", "expr-chain")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
302 {`'`, LiteralStringSingle, Push("#pop", "expr-chain", "string-single-interpol")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
303 {`"`, LiteralStringDouble, Push("#pop", "expr-chain", "string-double")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
304 {`~/(\\\\|\\/|[^/\n])*/[gimsu]*`, LiteralStringRegex, Push("#pop", "expr-chain")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
305 {`\[`, Punctuation, Push("#pop", "expr-chain", "array-decl")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
306 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
307 "expr-chain": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
308 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
309 {`(?:\+\+|\-\-)`, Operator, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
310 {`(?:%=|&=|\|=|\^=|\+=|\-=|\*=|/=|<<=|>\s*>\s*=|>\s*>\s*>\s*=|==|!=|<=|>\s*=|&&|\|\||<<|>>>|>\s*>|\.\.\.|<|>|%|&|\||\^|\+|\*|/|\-|=>|=)`, Operator, Push("#pop", "expr")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
311 {`(?:in)\b`, Keyword, Push("#pop", "expr")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
312 {`\?`, Operator, Push("#pop", "expr", "ternary", "expr")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
313 {`(\.)((?!(?:function|class|static|var|if|else|while|do|for|break|return|continue|extends|implements|import|switch|case|default|public|private|try|untyped|catch|new|this|throw|extern|enum|in|interface|cast|override|dynamic|typedef|package|inline|using|null|true|false|abstract)\b)(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+))`, ByGroups(Punctuation, Name), nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
314 {`\[`, Punctuation, Push("array-access")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
315 {`\(`, Punctuation, Push("call")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
316 Default(Pop(1)),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
317 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
318 "macro": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
319 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
320 Include("meta"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
321 {`:`, Punctuation, Push("#pop", "type")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
322 {`(?:extern|private)\b`, KeywordDeclaration, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
323 {`(?:abstract)\b`, KeywordDeclaration, Push("#pop", "optional-semicolon", "abstract")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
324 {`(?:class|interface)\b`, KeywordDeclaration, Push("#pop", "optional-semicolon", "macro-class")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
325 {`(?:enum)\b`, KeywordDeclaration, Push("#pop", "optional-semicolon", "enum")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
326 {`(?:typedef)\b`, KeywordDeclaration, Push("#pop", "optional-semicolon", "typedef")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
327 Default(Pop(1), Push("expr")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
328 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
329 "macro-class": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
330 {`\{`, Punctuation, Push("#pop", "class-body")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
331 Include("class"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
332 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
333 "cast": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
334 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
335 {`\(`, Punctuation, Push("#pop", "parenthesis-close", "cast-type", "expr")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
336 Default(Pop(1), Push("expr")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
337 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
338 "cast-type": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
339 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
340 {`,`, Punctuation, Push("#pop", "type")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
341 Default(Pop(1)),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
342 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
343 "catch": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
344 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
345 {`(?:catch)\b`, Keyword, Push("expr", "function-param", "parenthesis-open")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
346 Default(Pop(1)),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
347 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
348 "do": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
349 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
350 Default(Pop(1), Push("do-while"), Push("expr")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
351 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
352 "do-while": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
353 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
354 {`(?:while)\b`, Keyword, Push("#pop", "parenthesis", "parenthesis-open")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
355 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
356 "while": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
357 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
358 {`\(`, Punctuation, Push("#pop", "expr", "parenthesis")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
359 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
360 "for": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
361 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
362 {`\(`, Punctuation, Push("#pop", "expr", "parenthesis")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
363 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
364 "if": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
365 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
366 {`\(`, Punctuation, Push("#pop", "else", "optional-semicolon", "expr", "parenthesis")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
367 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
368 "else": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
369 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
370 {`(?:else)\b`, Keyword, Push("#pop", "expr")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
371 Default(Pop(1)),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
372 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
373 "switch": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
374 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
375 Default(Pop(1), Push("switch-body"), Push("bracket-open"), Push("expr")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
376 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
377 "switch-body": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
378 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
379 {`(?:case|default)\b`, Keyword, Push("case-block", "case")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
380 {`\}`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
381 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
382 "case": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
383 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
384 {`:`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
385 Default(Pop(1), Push("case-sep"), Push("case-guard"), Push("expr")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
386 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
387 "case-sep": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
388 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
389 {`:`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
390 {`,`, Punctuation, Push("#pop", "case")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
391 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
392 "case-guard": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
393 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
394 {`(?:if)\b`, Keyword, Push("#pop", "parenthesis", "parenthesis-open")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
395 Default(Pop(1)),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
396 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
397 "case-block": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
398 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
399 {`(?!(?:case|default)\b|\})`, Keyword, Push("expr-statement")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
400 Default(Pop(1)),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
401 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
402 "new": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
403 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
404 Default(Pop(1), Push("call"), Push("parenthesis-open"), Push("type")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
405 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
406 "array-decl": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
407 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
408 {`\]`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
409 Default(Pop(1), Push("array-decl-sep"), Push("expr")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
410 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
411 "array-decl-sep": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
412 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
413 {`\]`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
414 {`,`, Punctuation, Push("#pop", "array-decl")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
415 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
416 "array-access": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
417 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
418 Default(Pop(1), Push("array-access-close"), Push("expr")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
419 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
420 "array-access-close": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
421 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
422 {`\]`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
423 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
424 "comma": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
425 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
426 {`,`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
427 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
428 "colon": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
429 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
430 {`:`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
431 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
432 "semicolon": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
433 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
434 {`;`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
435 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
436 "optional-semicolon": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
437 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
438 {`;`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
439 Default(Pop(1)),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
440 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
441 "ident": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
442 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
443 {`(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, Name, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
444 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
445 "dollar": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
446 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
447 {`\{`, Punctuation, Push("#pop", "expr-chain", "bracket-close", "expr")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
448 Default(Pop(1), Push("expr-chain")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
449 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
450 "type-name": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
451 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
452 {`_*[A-Z]\w*`, Name, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
453 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
454 "type-full-name": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
455 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
456 {`\.`, Punctuation, Push("ident")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
457 Default(Pop(1)),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
458 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
459 "type": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
460 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
461 {`\?`, Punctuation, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
462 {`(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, Name, Push("#pop", "type-check", "type-full-name")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
463 {`\{`, Punctuation, Push("#pop", "type-check", "type-struct")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
464 {`\(`, Punctuation, Push("#pop", "type-check", "type-parenthesis")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
465 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
466 "type-parenthesis": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
467 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
468 Default(Pop(1), Push("parenthesis-close"), Push("type")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
469 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
470 "type-check": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
471 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
472 {`->`, Punctuation, Push("#pop", "type")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
473 {`<(?!=)`, Punctuation, Push("type-param")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
474 Default(Pop(1)),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
475 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
476 "type-struct": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
477 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
478 {`\}`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
479 {`\?`, Punctuation, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
480 {`>`, Punctuation, Push("comma", "type")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
481 {`(?!(?:function|class|static|var|if|else|while|do|for|break|return|continue|extends|implements|import|switch|case|default|public|private|try|untyped|catch|new|this|throw|extern|enum|in|interface|cast|override|dynamic|typedef|package|inline|using|null|true|false|abstract)\b)(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, Name, Push("#pop", "type-struct-sep", "type", "colon")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
482 Include("class-body"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
483 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
484 "type-struct-sep": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
485 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
486 {`\}`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
487 {`,`, Punctuation, Push("#pop", "type-struct")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
488 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
489 "type-param-type": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
490 {`\.[0-9]+`, LiteralNumberFloat, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
491 {`[0-9]+[eE][+\-]?[0-9]+`, LiteralNumberFloat, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
492 {`[0-9]+\.[0-9]*[eE][+\-]?[0-9]+`, LiteralNumberFloat, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
493 {`[0-9]+\.[0-9]+`, LiteralNumberFloat, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
494 {`[0-9]+\.(?!(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)|\.\.)`, LiteralNumberFloat, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
495 {`0x[0-9a-fA-F]+`, LiteralNumberHex, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
496 {`[0-9]+`, LiteralNumberInteger, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
497 {`'`, LiteralStringSingle, Push("#pop", "string-single")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
498 {`"`, LiteralStringDouble, Push("#pop", "string-double")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
499 {`~/(\\\\|\\/|[^/\n])*/[gim]*`, LiteralStringRegex, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
500 {`\[`, Operator, Push("#pop", "array-decl")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
501 Include("type"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
502 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
503 "type-param": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
504 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
505 Default(Pop(1), Push("type-param-sep"), Push("type-param-type")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
506 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
507 "type-param-sep": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
508 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
509 {`>`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
510 {`,`, Punctuation, Push("#pop", "type-param")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
511 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
512 "type-param-constraint": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
513 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
514 {`<(?!=)`, Punctuation, Push("#pop", "type-param-constraint-sep", "type-param-constraint-flag", "type-name")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
515 Default(Pop(1)),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
516 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
517 "type-param-constraint-sep": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
518 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
519 {`>`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
520 {`,`, Punctuation, Push("#pop", "type-param-constraint-sep", "type-param-constraint-flag", "type-name")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
521 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
522 "type-param-constraint-flag": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
523 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
524 {`:`, Punctuation, Push("#pop", "type-param-constraint-flag-type")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
525 Default(Pop(1)),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
526 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
527 "type-param-constraint-flag-type": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
528 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
529 {`\(`, Punctuation, Push("#pop", "type-param-constraint-flag-type-sep", "type")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
530 Default(Pop(1), Push("type")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
531 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
532 "type-param-constraint-flag-type-sep": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
533 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
534 {`\)`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
535 {`,`, Punctuation, Push("type")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
536 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
537 "parenthesis": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
538 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
539 Default(Pop(1), Push("parenthesis-close"), Push("flag"), Push("expr")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
540 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
541 "parenthesis-open": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
542 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
543 {`\(`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
544 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
545 "parenthesis-close": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
546 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
547 {`\)`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
548 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
549 "var": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
550 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
551 {`(?!(?:function|class|static|var|if|else|while|do|for|break|return|continue|extends|implements|import|switch|case|default|public|private|try|untyped|catch|new|this|throw|extern|enum|in|interface|cast|override|dynamic|typedef|package|inline|using|null|true|false|abstract)\b)(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, Text, Push("#pop", "var-sep", "assign", "flag", "prop-get-set")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
552 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
553 "var-sep": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
554 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
555 {`,`, Punctuation, Push("#pop", "var")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
556 Default(Pop(1)),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
557 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
558 "assign": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
559 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
560 {`=`, Operator, Push("#pop", "expr")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
561 Default(Pop(1)),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
562 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
563 "flag": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
564 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
565 {`:`, Punctuation, Push("#pop", "type")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
566 Default(Pop(1)),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
567 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
568 "ternary": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
569 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
570 {`:`, Operator, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
571 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
572 "call": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
573 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
574 {`\)`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
575 Default(Pop(1), Push("call-sep"), Push("expr")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
576 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
577 "call-sep": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
578 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
579 {`\)`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
580 {`,`, Punctuation, Push("#pop", "call")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
581 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
582 "bracket": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
583 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
584 {`(?!(?:\$\s*[a-z]\b|\$(?!(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+))))(?!(?:function|class|static|var|if|else|while|do|for|break|return|continue|extends|implements|import|switch|case|default|public|private|try|untyped|catch|new|this|throw|extern|enum|in|interface|cast|override|dynamic|typedef|package|inline|using|null|true|false|abstract)\b)(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, Name, Push("#pop", "bracket-check")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
585 {`'`, LiteralStringSingle, Push("#pop", "bracket-check", "string-single")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
586 {`"`, LiteralStringDouble, Push("#pop", "bracket-check", "string-double")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
587 Default(Pop(1), Push("block")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
588 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
589 "bracket-check": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
590 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
591 {`:`, Punctuation, Push("#pop", "object-sep", "expr")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
592 Default(Pop(1), Push("block"), Push("optional-semicolon"), Push("expr-chain")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
593 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
594 "block": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
595 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
596 {`\}`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
597 Default(Push("expr-statement")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
598 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
599 "object": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
600 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
601 {`\}`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
602 Default(Pop(1), Push("object-sep"), Push("expr"), Push("colon"), Push("ident-or-string")),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
603 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
604 "ident-or-string": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
605 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
606 {`(?!(?:function|class|static|var|if|else|while|do|for|break|return|continue|extends|implements|import|switch|case|default|public|private|try|untyped|catch|new|this|throw|extern|enum|in|interface|cast|override|dynamic|typedef|package|inline|using|null|true|false|abstract)\b)(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, Name, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
607 {`'`, LiteralStringSingle, Push("#pop", "string-single")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
608 {`"`, LiteralStringDouble, Push("#pop", "string-double")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
609 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
610 "object-sep": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
611 Include("spaces"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
612 {`\}`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
613 {`,`, Punctuation, Push("#pop", "object")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
614 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
615 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
616 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
617
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
618 func haxePreProcMutator(state *LexerState) error {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
619 stack, ok := state.Get("haxe-pre-proc").([][]string)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
620 if !ok {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
621 stack = [][]string{}
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
622 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
623
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
624 proc := state.Groups[2]
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
625 switch proc {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
626 case "if":
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
627 stack = append(stack, state.Stack)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
628 case "else", "elseif":
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
629 if len(stack) > 0 {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
630 state.Stack = stack[len(stack)-1]
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
631 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
632 case "end":
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
633 stack = stack[:len(stack)-1]
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
634 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
635
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
636 if proc == "if" || proc == "elseif" {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
637 state.Stack = append(state.Stack, "preproc-expr")
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
638 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
639
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
640 if proc == "error" {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
641 state.Stack = append(state.Stack, "preproc-error")
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
642 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
643 state.Set("haxe-pre-proc", stack)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
644 return nil
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
645 }