66
|
1 <lexer>
|
|
2 <config>
|
|
3 <name>Sass</name>
|
|
4 <alias>sass</alias>
|
|
5 <filename>*.sass</filename>
|
|
6 <mime_type>text/x-sass</mime_type>
|
|
7 <case_insensitive>true</case_insensitive>
|
|
8 </config>
|
|
9 <rules>
|
|
10 <state name="import">
|
|
11 <rule pattern="[ \t]+">
|
|
12 <token type="Text"/>
|
|
13 </rule>
|
|
14 <rule pattern="\S+">
|
|
15 <token type="LiteralString"/>
|
|
16 </rule>
|
|
17 <rule pattern="\n">
|
|
18 <token type="Text"/>
|
|
19 <push state="root"/>
|
|
20 </rule>
|
|
21 </state>
|
|
22 <state name="string-single">
|
|
23 <rule pattern="(\\.|#(?=[^\n{])|[^\n'#])+">
|
|
24 <token type="LiteralStringSingle"/>
|
|
25 </rule>
|
|
26 <rule pattern="#\{">
|
|
27 <token type="LiteralStringInterpol"/>
|
|
28 <push state="interpolation"/>
|
|
29 </rule>
|
|
30 <rule pattern="'">
|
|
31 <token type="LiteralStringSingle"/>
|
|
32 <pop depth="1"/>
|
|
33 </rule>
|
|
34 </state>
|
|
35 <state name="string-double">
|
|
36 <rule pattern="(\\.|#(?=[^\n{])|[^\n"#])+">
|
|
37 <token type="LiteralStringDouble"/>
|
|
38 </rule>
|
|
39 <rule pattern="#\{">
|
|
40 <token type="LiteralStringInterpol"/>
|
|
41 <push state="interpolation"/>
|
|
42 </rule>
|
|
43 <rule pattern=""">
|
|
44 <token type="LiteralStringDouble"/>
|
|
45 <pop depth="1"/>
|
|
46 </rule>
|
|
47 </state>
|
|
48 <state name="pseudo-class">
|
|
49 <rule pattern="[\w-]+">
|
|
50 <token type="NameDecorator"/>
|
|
51 </rule>
|
|
52 <rule pattern="#\{">
|
|
53 <token type="LiteralStringInterpol"/>
|
|
54 <push state="interpolation"/>
|
|
55 </rule>
|
|
56 <rule>
|
|
57 <pop depth="1"/>
|
|
58 </rule>
|
|
59 </state>
|
|
60 <state name="for">
|
|
61 <rule pattern="(from|to|through)">
|
|
62 <token type="OperatorWord"/>
|
|
63 </rule>
|
|
64 <rule>
|
|
65 <include state="value"/>
|
|
66 </rule>
|
|
67 </state>
|
|
68 <state name="selector">
|
|
69 <rule pattern="[ \t]+">
|
|
70 <token type="Text"/>
|
|
71 </rule>
|
|
72 <rule pattern="\:">
|
|
73 <token type="NameDecorator"/>
|
|
74 <push state="pseudo-class"/>
|
|
75 </rule>
|
|
76 <rule pattern="\.">
|
|
77 <token type="NameClass"/>
|
|
78 <push state="class"/>
|
|
79 </rule>
|
|
80 <rule pattern="\#">
|
|
81 <token type="NameNamespace"/>
|
|
82 <push state="id"/>
|
|
83 </rule>
|
|
84 <rule pattern="[\w-]+">
|
|
85 <token type="NameTag"/>
|
|
86 </rule>
|
|
87 <rule pattern="#\{">
|
|
88 <token type="LiteralStringInterpol"/>
|
|
89 <push state="interpolation"/>
|
|
90 </rule>
|
|
91 <rule pattern="&">
|
|
92 <token type="Keyword"/>
|
|
93 </rule>
|
|
94 <rule pattern="[~^*!&\[\]()<>|+=@:;,./?-]">
|
|
95 <token type="Operator"/>
|
|
96 </rule>
|
|
97 <rule pattern=""">
|
|
98 <token type="LiteralStringDouble"/>
|
|
99 <push state="string-double"/>
|
|
100 </rule>
|
|
101 <rule pattern="'">
|
|
102 <token type="LiteralStringSingle"/>
|
|
103 <push state="string-single"/>
|
|
104 </rule>
|
|
105 <rule pattern="\n">
|
|
106 <token type="Text"/>
|
|
107 <push state="root"/>
|
|
108 </rule>
|
|
109 </state>
|
|
110 <state name="value">
|
|
111 <rule pattern="[ \t]+">
|
|
112 <token type="Text"/>
|
|
113 </rule>
|
|
114 <rule pattern="[!$][\w-]+">
|
|
115 <token type="NameVariable"/>
|
|
116 </rule>
|
|
117 <rule pattern="url\(">
|
|
118 <token type="LiteralStringOther"/>
|
|
119 <push state="string-url"/>
|
|
120 </rule>
|
|
121 <rule pattern="[a-z_-][\w-]*(?=\()">
|
|
122 <token type="NameFunction"/>
|
|
123 </rule>
|
|
124 <rule pattern="(color-interpolation-filters|glyph-orientation-vertical|transition-timing-function|border-bottom-right-radius|border-bottom-left-radius|animation-iteration-count|animation-timing-function|font-variant-alternates|font-variant-east-asian|text-underline-position|border-top-right-radius|scroll-snap-destination|scroll-snap-coordinate|font-language-override|text-emphasis-position|font-variant-ligatures|border-top-left-radius|background-blend-mode|background-attachment|text-decoration-color|text-decoration-style|font-feature-settings|grid-template-columns|shape-image-threshold|hyphenate-limit-lines|hyphenate-limit-chars|font-variant-position|hyphenate-limit-last|scroll-snap-points-x|initial-letter-align|decimal-leading-zero|box-decoration-break|hyphenate-limit-zone|text-combine-upright|text-decoration-skip|font-variant-numeric|scroll-snap-points-y|animation-play-state|text-decoration-line|hyphenate-character|transition-duration|text-emphasis-style|border-bottom-width|border-image-repeat|grid-template-areas|border-image-source|animation-direction|initial-letter-wrap|list-style-position|transition-property|text-space-collapse|border-bottom-style|hanging-punctuation|text-emphasis-color|border-image-outset|background-position|animation-fill-mode|backface-visibility|border-bottom-color|border-right-width|alignment-baseline|mask-border-outset|border-right-style|border-right-color|mask-border-repeat|table-header-group|grid-template-rows|animation-duration|perspective-origin|presentation-level|table-footer-group|mask-border-source|border-image-width|border-image-slice|table-column-group|counter-increment|dominant-baseline|column-rule-width|speak-punctuation|page-break-before|image-orientation|font-variant-caps|grid-auto-columns|page-break-inside|border-left-width|marquee-direction|border-left-style|border-left-color|grid-column-start|mask-border-width|column-rule-color|column-rule-style|background-repeat|background-origin|mask-border-slice|scroll-snap-type|border-top-style|border-top-width|background-image|page-break-after|transform-origin|border-top-color|text-orientation|background-color|transition-delay|footnote-display|list-style-image|mask-border-mode|font-size-adjust|image-resolution|footnote-policy|object-position|ultra-condensed|motion-rotation|cjk-ideographic|justify-content|animation-delay|region-fragment|table-row-group|caret-animation|text-align-last|float-reference|extra-condensed|transform-style|text-decoration|grid-column-gap|border-collapse|background-clip|border-boundary|text-space-trim|grid-column-end|list-style-type|background-size|font-synthesis|padding-bottom|outline-offset|initial-letter|animation-name|hiragana-iroha|katakana-iroha|no-close-quote|border-spacing|rotation-point|flex-direction|voice-duration|grid-row-start|vertical-align|extra-expanded|polar-distance|baseline-shift|letter-spacing|grid-auto-flow|grid-auto-rows|lighting-color|bookmark-label|text-transform|semi-condensed|bookmark-level|mask-composite|bookmark-state|ultra-expanded|mix-blend-mode|overflow-style|grid-template|border-bottom|small-caption|semi-expanded|mask-position|no-open-quote|motion-offset|border-radius|offset-before|outline-color|outline-style|table-caption|outline-width|overflow-wrap|padding-right|flood-opacity|voice-balance|ruby-position|justify-items|bidi-override|marquee-style|shape-outside|speak-numeral|marquee-speed|counter-reset|margin-bottom|text-overflow|text-emphasis|align-content|break-before|border-width|border-image|shape-margin|speak-header|margin-right|inline-table|table-layout|center-right|marquee-loop|border-color|line-through|box-suppress|shape-inside|justify-self|float-offset|pause-before|table-column|grid-row-gap|grid-row-end|padding-left|text-justify|column-count|wrap-through|font-kerning|font-stretch|border-right|border-style|word-spacing|offset-start|caption-side|voice-volume|voice-stress|font-variant|text-spacing|offset-after|voice-family|unicode-bidi|break-inside|writing-mode|column-width|break-after|user-select|align-items|motion-path|font-weight|grid-column|voice-range|white-space|will-change|wrap-before|transparent|caret-color|text-bottom|caret-shape|mask-repeat|wrap-inside|upper-latin|text-shadow|mask-origin|font-family|flex-shrink|column-fill|message-box|text-indent|lower-roman|column-rule|padding-top|column-span|play-during|upper-roman|flood-color|page-policy|border-left|pause-after|lower-greek|perspective|lower-alpha|counter-set|mask-border|center-left|polar-angle|float-defer|marker-side|speech-rate|upper-alpha|line-height|pitch-range|empty-cells|close-quote|rest-before|margin-left|voice-pitch|overflow-y|small-caps|ruby-align|ruby-merge|wrap-after|box-shadow|word-break|flex-basis|max-height|rest-after|mask-image|list-style|min-height|voice-rate|visibility|sans-serif|object-fit|continuous|status-bar|offset-end|align-self|box-sizing|right-side|string-set|transition|margin-top|text-align|cue-before|border-top|font-style|line-break|background|capitalize|table-cell|open-quote|appearance|overflow-x|column-gap|rightwards|table-row|animation|flow-into|landscape|left-side|clip-rule|font-size|clip-path|flow-from|text-wrap|nw-resize|transform|no-repeat|line-grid|condensed|sw-resize|leftwards|line-snap|direction|crosshair|nav-right|list-item|se-resize|isolation|underline|grid-area|uppercase|min-width|flex-wrap|spell-out|max-width|ne-resize|max-lines|mask-clip|elevation|far-right|flex-flow|mask-type|word-wrap|flex-grow|mask-size|wrap-flow|monospace|mask-mode|cue-after|lowercase|relative|absolute|grid-row|armenian|e-resize|narrower|expanded|baseline|nav-down|nav-left|w-resize|xx-large|text-top|overline|overflow|katakana|n-resize|repeat-x|repeat-y|rotation|position|box-snap|xx-small|collapse|tab-size|speak-as|hiragana|s-resize|portrait|georgian|richness|separate|grid-gap|far-left|inherit|columns|content|oblique|default|outside|display|x-small|decimal|fantasy|z-index|running|azimuth|x-large|lighter|cursive|padding|outline|orphans|opacity|pointer|move-to|visible|hyphens|justify|smaller|nav-up|circle|inline|motion|inside|invert|italic|height|center|higher|x-fast|larger|hidden|digits|hebrew|groove|x-high|faster|quotes|static|behind|square|resize|border|slower|silent|dashed|medium|always|middle|filter|x-loud|bottom|widows|volume|scroll|chains|x-soft|stress|normal|nowrap|repeat|double|dotted|margin|outset|cursor|bolder|avoid|embed|x-low|above|fixed|wider|cross|inset|ridge|large|clear|speak|order|caret|width|thick|block|level|serif|blink|lower|pause|pitch|right|aural|super|below|solid|color|float|hide|soft|rest|grid|auto|slow|flow|show|page|disc|left|clip|text|flex|bold|loud|thin|size|none|help|both|once|icon|crop|fast|crop|high|mask|wait|font|all|url|top|rgb|mix|yes|low|ltr|cue|px)\b">
|
|
125 <token type="NameConstant"/>
|
|
126 </rule>
|
|
127 <rule pattern="(lightgoldenrodyellow|mediumspringgreen|mediumaquamarine|mediumslateblue|mediumturquoise|mediumvioletred|lightsteelblue|cornflowerblue|lightslategray|blanchedalmond|mediumseagreen|lightslategrey|darkolivegreen|darkgoldenrod|darkslateblue|lightseagreen|rebeccapurple|darkslategrey|darkslategray|palegoldenrod|paleturquoise|palevioletred|darkturquoise|lavenderblush|antiquewhite|mediumorchid|lightskyblue|mediumpurple|midnightblue|darkseagreen|lemonchiffon|springgreen|yellowgreen|greenyellow|navajowhite|darkmagenta|lightyellow|transparent|lightsalmon|forestgreen|saddlebrown|deepskyblue|floralwhite|dodgerblue|ghostwhite|lightcoral|sandybrown|darkviolet|papayawhip|mediumblue|chartreuse|lightgreen|whitesmoke|aquamarine|darkorange|darksalmon|powderblue|darkorchid|blueviolet|indianred|mintcream|mistyrose|olivedrab|goldenrod|orangered|lawngreen|gainsboro|lightblue|firebrick|lightcyan|peachpuff|lightgray|darkkhaki|lightgrey|darkgreen|rosybrown|royalblue|slateblue|chocolate|cadetblue|burlywood|slategray|slategrey|limegreen|steelblue|turquoise|palegreen|lightpink|aliceblue|moccasin|darkgrey|darkblue|seagreen|lavender|cornsilk|deeppink|seashell|darkgray|honeydew|darkcyan|dimgrey|magenta|crimson|darkred|hotpink|skyblue|oldlace|dimgray|fuchsia|thistle|orchid|indigo|orange|tomato|violet|salmon|yellow|silver|purple|bisque|sienna|maroon|black|linen|azure|white|wheat|khaki|green|olive|ivory|coral|brown|beige|snow|blue|navy|aqua|teal|gray|gold|grey|lime|peru|cyan|pink|plum|tan|red)\b">
|
|
128 <token type="NameEntity"/>
|
|
129 </rule>
|
|
130 <rule pattern="(fuchsia|purple|yellow|maroon|silver|white|olive|green|black|lime|gray|navy|blue|teal|aqua|red)\b">
|
|
131 <token type="NameBuiltin"/>
|
|
132 </rule>
|
|
133 <rule pattern="\!(important|default)">
|
|
134 <token type="NameException"/>
|
|
135 </rule>
|
|
136 <rule pattern="(true|false)">
|
|
137 <token type="NamePseudo"/>
|
|
138 </rule>
|
|
139 <rule pattern="(and|or|not)">
|
|
140 <token type="OperatorWord"/>
|
|
141 </rule>
|
|
142 <rule pattern="/\*">
|
|
143 <token type="CommentMultiline"/>
|
|
144 <push state="inline-comment"/>
|
|
145 </rule>
|
|
146 <rule pattern="//[^\n]*">
|
|
147 <token type="CommentSingle"/>
|
|
148 </rule>
|
|
149 <rule pattern="\#[a-z0-9]{1,6}">
|
|
150 <token type="LiteralNumberHex"/>
|
|
151 </rule>
|
|
152 <rule pattern="(-?\d+)(\%|[a-z]+)?">
|
|
153 <bygroups>
|
|
154 <token type="LiteralNumberInteger"/>
|
|
155 <token type="KeywordType"/>
|
|
156 </bygroups>
|
|
157 </rule>
|
|
158 <rule pattern="(-?\d*\.\d+)(\%|[a-z]+)?">
|
|
159 <bygroups>
|
|
160 <token type="LiteralNumberFloat"/>
|
|
161 <token type="KeywordType"/>
|
|
162 </bygroups>
|
|
163 </rule>
|
|
164 <rule pattern="#\{">
|
|
165 <token type="LiteralStringInterpol"/>
|
|
166 <push state="interpolation"/>
|
|
167 </rule>
|
|
168 <rule pattern="[~^*!&%<>|+=@:,./?-]+">
|
|
169 <token type="Operator"/>
|
|
170 </rule>
|
|
171 <rule pattern="[\[\]()]+">
|
|
172 <token type="Punctuation"/>
|
|
173 </rule>
|
|
174 <rule pattern=""">
|
|
175 <token type="LiteralStringDouble"/>
|
|
176 <push state="string-double"/>
|
|
177 </rule>
|
|
178 <rule pattern="'">
|
|
179 <token type="LiteralStringSingle"/>
|
|
180 <push state="string-single"/>
|
|
181 </rule>
|
|
182 <rule pattern="[a-z_-][\w-]*">
|
|
183 <token type="Name"/>
|
|
184 </rule>
|
|
185 <rule pattern="\n">
|
|
186 <token type="Text"/>
|
|
187 <push state="root"/>
|
|
188 </rule>
|
|
189 </state>
|
|
190 <state name="id">
|
|
191 <rule pattern="[\w-]+">
|
|
192 <token type="NameNamespace"/>
|
|
193 </rule>
|
|
194 <rule pattern="#\{">
|
|
195 <token type="LiteralStringInterpol"/>
|
|
196 <push state="interpolation"/>
|
|
197 </rule>
|
|
198 <rule>
|
|
199 <pop depth="1"/>
|
|
200 </rule>
|
|
201 </state>
|
|
202 <state name="multi-comment">
|
|
203 <rule pattern=".+">
|
|
204 <token type="CommentMultiline"/>
|
|
205 </rule>
|
|
206 <rule pattern="\n">
|
|
207 <token type="Text"/>
|
|
208 <push state="root"/>
|
|
209 </rule>
|
|
210 </state>
|
|
211 <state name="interpolation">
|
|
212 <rule pattern="\}">
|
|
213 <token type="LiteralStringInterpol"/>
|
|
214 <pop depth="1"/>
|
|
215 </rule>
|
|
216 <rule>
|
|
217 <include state="value"/>
|
|
218 </rule>
|
|
219 </state>
|
|
220 <state name="string-url">
|
|
221 <rule pattern="(\\#|#(?=[^\n{])|[^\n#)])+">
|
|
222 <token type="LiteralStringOther"/>
|
|
223 </rule>
|
|
224 <rule pattern="#\{">
|
|
225 <token type="LiteralStringInterpol"/>
|
|
226 <push state="interpolation"/>
|
|
227 </rule>
|
|
228 <rule pattern="\)">
|
|
229 <token type="LiteralStringOther"/>
|
|
230 <pop depth="1"/>
|
|
231 </rule>
|
|
232 </state>
|
|
233 <state name="inline-comment">
|
|
234 <rule pattern="(\\#|#(?=[^\n{])|\*(?=[^\n/])|[^\n#*])+">
|
|
235 <token type="CommentMultiline"/>
|
|
236 </rule>
|
|
237 <rule pattern="#\{">
|
|
238 <token type="LiteralStringInterpol"/>
|
|
239 <push state="interpolation"/>
|
|
240 </rule>
|
|
241 <rule pattern="\*/">
|
|
242 <token type="Comment"/>
|
|
243 <pop depth="1"/>
|
|
244 </rule>
|
|
245 </state>
|
|
246 <state name="root">
|
|
247 <rule pattern="[ \t]*\n">
|
|
248 <token type="Text"/>
|
|
249 </rule>
|
|
250 <rule pattern="@import">
|
|
251 <token type="Keyword"/>
|
|
252 <push state="import"/>
|
|
253 </rule>
|
|
254 <rule pattern="@for">
|
|
255 <token type="Keyword"/>
|
|
256 <push state="for"/>
|
|
257 </rule>
|
|
258 <rule pattern="@(debug|warn|if|while)">
|
|
259 <token type="Keyword"/>
|
|
260 <push state="value"/>
|
|
261 </rule>
|
|
262 <rule pattern="(@mixin)( [\w-]+)">
|
|
263 <bygroups>
|
|
264 <token type="Keyword"/>
|
|
265 <token type="NameFunction"/>
|
|
266 </bygroups>
|
|
267 <push state="value"/>
|
|
268 </rule>
|
|
269 <rule pattern="(@include)( [\w-]+)">
|
|
270 <bygroups>
|
|
271 <token type="Keyword"/>
|
|
272 <token type="NameDecorator"/>
|
|
273 </bygroups>
|
|
274 <push state="value"/>
|
|
275 </rule>
|
|
276 <rule pattern="@extend">
|
|
277 <token type="Keyword"/>
|
|
278 <push state="selector"/>
|
|
279 </rule>
|
|
280 <rule pattern="@[\w-]+">
|
|
281 <token type="Keyword"/>
|
|
282 <push state="selector"/>
|
|
283 </rule>
|
|
284 <rule pattern="=[\w-]+">
|
|
285 <token type="NameFunction"/>
|
|
286 <push state="value"/>
|
|
287 </rule>
|
|
288 <rule pattern="\+[\w-]+">
|
|
289 <token type="NameDecorator"/>
|
|
290 <push state="value"/>
|
|
291 </rule>
|
|
292 <rule pattern="([!$][\w-]\w*)([ \t]*(?:(?:\|\|)?=|:))">
|
|
293 <bygroups>
|
|
294 <token type="NameVariable"/>
|
|
295 <token type="Operator"/>
|
|
296 </bygroups>
|
|
297 <push state="value"/>
|
|
298 </rule>
|
|
299 <rule pattern=":">
|
|
300 <token type="NameAttribute"/>
|
|
301 <push state="old-style-attr"/>
|
|
302 </rule>
|
|
303 <rule pattern="(?=.+?[=:]([^a-z]|$))">
|
|
304 <token type="NameAttribute"/>
|
|
305 <push state="new-style-attr"/>
|
|
306 </rule>
|
|
307 <rule>
|
|
308 <push state="selector"/>
|
|
309 </rule>
|
|
310 </state>
|
|
311 <state name="single-comment">
|
|
312 <rule pattern=".+">
|
|
313 <token type="CommentSingle"/>
|
|
314 </rule>
|
|
315 <rule pattern="\n">
|
|
316 <token type="Text"/>
|
|
317 <push state="root"/>
|
|
318 </rule>
|
|
319 </state>
|
|
320 <state name="new-style-attr">
|
|
321 <rule pattern="[^\s:="\[]+">
|
|
322 <token type="NameAttribute"/>
|
|
323 </rule>
|
|
324 <rule pattern="#\{">
|
|
325 <token type="LiteralStringInterpol"/>
|
|
326 <push state="interpolation"/>
|
|
327 </rule>
|
|
328 <rule pattern="[ \t]*[=:]">
|
|
329 <token type="Operator"/>
|
|
330 <push state="value"/>
|
|
331 </rule>
|
|
332 </state>
|
|
333 <state name="class">
|
|
334 <rule pattern="[\w-]+">
|
|
335 <token type="NameClass"/>
|
|
336 </rule>
|
|
337 <rule pattern="#\{">
|
|
338 <token type="LiteralStringInterpol"/>
|
|
339 <push state="interpolation"/>
|
|
340 </rule>
|
|
341 <rule>
|
|
342 <pop depth="1"/>
|
|
343 </rule>
|
|
344 </state>
|
|
345 <state name="old-style-attr">
|
|
346 <rule pattern="[^\s:="\[]+">
|
|
347 <token type="NameAttribute"/>
|
|
348 </rule>
|
|
349 <rule pattern="#\{">
|
|
350 <token type="LiteralStringInterpol"/>
|
|
351 <push state="interpolation"/>
|
|
352 </rule>
|
|
353 <rule pattern="[ \t]*=">
|
|
354 <token type="Operator"/>
|
|
355 <push state="value"/>
|
|
356 </rule>
|
|
357 <rule>
|
|
358 <push state="value"/>
|
|
359 </rule>
|
|
360 </state>
|
|
361 </rules>
|
|
362 </lexer> |