@@ -8,13 +8,13 @@ var css_grammar = {
8
8
// else matched one by one,
9
9
// this is usefull for speed fine-tuning the parser
10
10
"RegExpGroups" : {
11
+ "font" : true ,
11
12
"standard" : true ,
12
- "standard2" : true ,
13
13
"atom" : true ,
14
14
"meta" : true ,
15
15
"meta2" : true ,
16
- "keyword " : true ,
17
- "builtin " : true ,
16
+ "property " : true ,
17
+ "element " : true ,
18
18
"operator" : true ,
19
19
"delimiter" : true
20
20
} ,
@@ -29,17 +29,19 @@ var css_grammar = {
29
29
"meta" : "attribute" ,
30
30
"meta2" : "def" ,
31
31
"atom" : "string-2" ,
32
- "keyword" : "property" ,
33
- "builtin" : "tag" ,
32
+ "property" : "property" ,
33
+ "element" : "tag" ,
34
+ "url" : "tag" ,
34
35
"operator" : "operator" ,
35
- "standard" : "variable-2" ,
36
- "standard2" : "keyword" ,
36
+ "font" : "variable-2" ,
37
+ "standard" : "keyword" ,
37
38
"cssID" : "builtin" ,
38
39
"cssClass" : "qualifier" ,
39
40
"identifier" : "variable-2" ,
40
41
"number" : "number" ,
41
42
"number2" : "builtin" ,
42
- "string" : "string"
43
+ "string" : "string" ,
44
+ "unquotedText" : "string"
43
45
} ,
44
46
45
47
@@ -58,20 +60,17 @@ var css_grammar = {
58
60
} ,
59
61
60
62
// some standard identifiers
61
- "standard " : {
63
+ "font " : {
62
64
"type" : "simple" ,
63
65
"tokens" : [
64
- "arial" ,
65
- "tahoma" ,
66
- "courier"
66
+ "arial" , "tahoma" , "courier"
67
67
]
68
68
} ,
69
69
70
- "standard2 " : {
70
+ "standard " : {
71
71
"type" : "simple" ,
72
72
"tokens" : [
73
- "!important" ,
74
- "only"
73
+ "!important" , "only"
75
74
]
76
75
} ,
77
76
@@ -108,6 +107,7 @@ var css_grammar = {
108
107
"RegExp::0(?![\\dx])(em|px|%|pt)?"
109
108
]
110
109
} ,
110
+
111
111
"number2" : {
112
112
"type" : "simple" ,
113
113
"tokens" : [
@@ -126,6 +126,11 @@ var css_grammar = {
126
126
]
127
127
} ,
128
128
129
+ "unquotedText" : {
130
+ "type" : "simple" ,
131
+ "tokens" : "RegExp::[^\\(\\)\\[\\]\\{\\}'\"]+"
132
+ } ,
133
+
129
134
// operators
130
135
"operator" : {
131
136
"type" : "simple" ,
@@ -134,11 +139,40 @@ var css_grammar = {
134
139
]
135
140
} ,
136
141
137
- // delimiters
142
+ "leftBracket" : {
143
+ "type" : "simple" ,
144
+ "tokens" : "{"
145
+ } ,
146
+
147
+ "rightBracket" : {
148
+ "type" : "simple" ,
149
+ "tokens" : "}"
150
+ } ,
151
+
152
+ "leftParen" : {
153
+ "type" : "simple" ,
154
+ "tokens" : "("
155
+ } ,
156
+
157
+ "rightParen" : {
158
+ "type" : "simple" ,
159
+ "tokens" : ")"
160
+ } ,
161
+
162
+ "assignment" : {
163
+ "type" : "simple" ,
164
+ "tokens" : ":"
165
+ } ,
166
+
167
+ "endAssignment" : {
168
+ "type" : "simple" ,
169
+ "tokens" : ";"
170
+ } ,
171
+
138
172
"delimiter" : {
139
173
"type" : "simple" ,
140
174
"tokens" : [
141
- "(" , ")" , "[" , "]" , "{ " , "}" , "," , "=" , ";" , ". "
175
+ "," , "[" , "]" , "( " , ") "
142
176
]
143
177
} ,
144
178
@@ -169,8 +203,8 @@ var css_grammar = {
169
203
]
170
204
} ,
171
205
172
- // keywords
173
- "keyword " : {
206
+ // css properties
207
+ "property " : {
174
208
"type" : "simple" ,
175
209
"tokens" : [
176
210
"background-color" , "background-image" , "background-position" , "background-repeat" , "background" ,
@@ -183,7 +217,8 @@ var css_grammar = {
183
217
]
184
218
} ,
185
219
186
- "builtin" : {
220
+ // css html element
221
+ "element" : {
187
222
"type" : "simple" ,
188
223
"tokens" : [
189
224
"a" , "p" , "i" ,
@@ -199,26 +234,70 @@ var css_grammar = {
199
234
"blockquote" ,
200
235
"before" , "after" , "url"
201
236
]
237
+ } ,
238
+
239
+ "url" : {
240
+ "type" : "simple" ,
241
+ "tokens" : "url"
202
242
}
203
243
} ,
204
244
245
+ //
246
+ // Syntax model
247
+ "Syntax" : {
248
+
249
+ "stringOrUnquotedText" : {
250
+ "type" : "group" ,
251
+ "match" : "either" ,
252
+ "tokens" : [ "string" , "unquotedText" ]
253
+ } ,
254
+
255
+ // highlight url(...) as string regardless of quotes or not
256
+ "urlDeclaration" : {
257
+ "type" : "n-gram" ,
258
+ "match" : "either" ,
259
+ "tokens" : [ "url" , "leftParen" , "stringOrUnquotedText" , "rightParen" ]
260
+ } ,
261
+
262
+ "RHSAssignment" : {
263
+ "type" : "group" ,
264
+ "match" : "oneOrMore" ,
265
+ "tokens" : [ "delimiter" , "atom" , "font" , "standard" , "string" , "number" , "number2" , "identifier" ]
266
+ } ,
267
+
268
+ "cssAssignment" : {
269
+ "type" : "group" ,
270
+ "match" : "all" ,
271
+ "tokens" : [ "property" , "assignment" , "RHSAssignment" , "endAssignment" ]
272
+ } ,
273
+
274
+ "cssAssignments" : {
275
+ "type" : "group" ,
276
+ "match" : "zeroOrMore" ,
277
+ "tokens" : [ "cssAssignment" ]
278
+ } ,
279
+
280
+ // syntax grammar (n-gram) for a block of css assignments
281
+ "cssBlock" : {
282
+ "type" : "n-gram" ,
283
+ "tokens" : [
284
+ [ "leftBracket" , "cssAssignments" , "rightBracket" ]
285
+ ]
286
+ }
287
+ } ,
288
+
205
289
// what to parse and in what order
206
290
"Parser" : [
207
291
"comment" ,
292
+ "urlDeclaration" ,
208
293
"number" ,
209
294
"cssID" ,
210
295
"number2" ,
211
296
"string" ,
212
- "keyword" ,
213
- "builtin" ,
214
- "atom" ,
297
+ "element" ,
215
298
"meta" ,
216
299
"meta2" ,
217
- "operator" ,
218
- "delimiter" ,
219
- "standard" ,
220
- "standard2" ,
221
300
"cssClass" ,
222
- "identifier "
301
+ "cssBlock "
223
302
]
224
303
} ;
0 commit comments