less 1.0.16 → 1.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4296 +0,0 @@
1
- module Less
2
- include Treetop::Runtime
3
-
4
- def root
5
- @root || :primary
6
- end
7
-
8
- def _nt_primary
9
- start_index = index
10
- if node_cache[:primary].has_key?(index)
11
- cached = node_cache[:primary][index]
12
- @index = cached.interval.end if cached
13
- return cached
14
- end
15
-
16
- i0 = index
17
- s1, i1 = [], index
18
- loop do
19
- i2 = index
20
- r3 = _nt_declaration
21
- if r3
22
- r2 = r3
23
- else
24
- r4 = _nt_ruleset
25
- if r4
26
- r2 = r4
27
- else
28
- r5 = _nt_import
29
- if r5
30
- r2 = r5
31
- else
32
- r6 = _nt_comment
33
- if r6
34
- r2 = r6
35
- else
36
- @index = i2
37
- r2 = nil
38
- end
39
- end
40
- end
41
- end
42
- if r2
43
- s1 << r2
44
- else
45
- break
46
- end
47
- end
48
- if s1.empty?
49
- @index = i1
50
- r1 = nil
51
- else
52
- r1 = instantiate_node(Builder,input, i1...index, s1)
53
- end
54
- if r1
55
- r0 = r1
56
- else
57
- s7, i7 = [], index
58
- loop do
59
- r8 = _nt_declaration
60
- if r8
61
- s7 << r8
62
- else
63
- break
64
- end
65
- end
66
- r7 = instantiate_node(Builder,input, i7...index, s7)
67
- if r7
68
- r0 = r7
69
- else
70
- s9, i9 = [], index
71
- loop do
72
- r10 = _nt_import
73
- if r10
74
- s9 << r10
75
- else
76
- break
77
- end
78
- end
79
- r9 = instantiate_node(Builder,input, i9...index, s9)
80
- if r9
81
- r0 = r9
82
- else
83
- s11, i11 = [], index
84
- loop do
85
- r12 = _nt_comment
86
- if r12
87
- s11 << r12
88
- else
89
- break
90
- end
91
- end
92
- r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
93
- if r11
94
- r0 = r11
95
- else
96
- @index = i0
97
- r0 = nil
98
- end
99
- end
100
- end
101
- end
102
-
103
- node_cache[:primary][start_index] = r0
104
-
105
- r0
106
- end
107
-
108
- module Comment0
109
- end
110
-
111
- module Comment1
112
- def ws
113
- elements[0]
114
- end
115
-
116
- def ws
117
- elements[4]
118
- end
119
- end
120
-
121
- module Comment2
122
- end
123
-
124
- module Comment3
125
- def ws
126
- elements[0]
127
- end
128
-
129
- def ws
130
- elements[4]
131
- end
132
- end
133
-
134
- def _nt_comment
135
- start_index = index
136
- if node_cache[:comment].has_key?(index)
137
- cached = node_cache[:comment][index]
138
- @index = cached.interval.end if cached
139
- return cached
140
- end
141
-
142
- i0 = index
143
- i1, s1 = index, []
144
- r2 = _nt_ws
145
- s1 << r2
146
- if r2
147
- if has_terminal?('/*', false, index)
148
- r3 = instantiate_node(SyntaxNode,input, index...(index + 2))
149
- @index += 2
150
- else
151
- terminal_parse_failure('/*')
152
- r3 = nil
153
- end
154
- s1 << r3
155
- if r3
156
- s4, i4 = [], index
157
- loop do
158
- i5, s5 = index, []
159
- i6 = index
160
- if has_terminal?('*/', false, index)
161
- r7 = instantiate_node(SyntaxNode,input, index...(index + 2))
162
- @index += 2
163
- else
164
- terminal_parse_failure('*/')
165
- r7 = nil
166
- end
167
- if r7
168
- r6 = nil
169
- else
170
- @index = i6
171
- r6 = instantiate_node(SyntaxNode,input, index...index)
172
- end
173
- s5 << r6
174
- if r6
175
- if index < input_length
176
- r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
177
- @index += 1
178
- else
179
- terminal_parse_failure("any character")
180
- r8 = nil
181
- end
182
- s5 << r8
183
- end
184
- if s5.last
185
- r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
186
- r5.extend(Comment0)
187
- else
188
- @index = i5
189
- r5 = nil
190
- end
191
- if r5
192
- s4 << r5
193
- else
194
- break
195
- end
196
- end
197
- r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
198
- s1 << r4
199
- if r4
200
- if has_terminal?('*/', false, index)
201
- r9 = instantiate_node(SyntaxNode,input, index...(index + 2))
202
- @index += 2
203
- else
204
- terminal_parse_failure('*/')
205
- r9 = nil
206
- end
207
- s1 << r9
208
- if r9
209
- r10 = _nt_ws
210
- s1 << r10
211
- end
212
- end
213
- end
214
- end
215
- if s1.last
216
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
217
- r1.extend(Comment1)
218
- else
219
- @index = i1
220
- r1 = nil
221
- end
222
- if r1
223
- r0 = r1
224
- else
225
- i11, s11 = index, []
226
- r12 = _nt_ws
227
- s11 << r12
228
- if r12
229
- if has_terminal?('//', false, index)
230
- r13 = instantiate_node(SyntaxNode,input, index...(index + 2))
231
- @index += 2
232
- else
233
- terminal_parse_failure('//')
234
- r13 = nil
235
- end
236
- s11 << r13
237
- if r13
238
- s14, i14 = [], index
239
- loop do
240
- i15, s15 = index, []
241
- i16 = index
242
- if has_terminal?("\n", false, index)
243
- r17 = instantiate_node(SyntaxNode,input, index...(index + 1))
244
- @index += 1
245
- else
246
- terminal_parse_failure("\n")
247
- r17 = nil
248
- end
249
- if r17
250
- r16 = nil
251
- else
252
- @index = i16
253
- r16 = instantiate_node(SyntaxNode,input, index...index)
254
- end
255
- s15 << r16
256
- if r16
257
- if index < input_length
258
- r18 = instantiate_node(SyntaxNode,input, index...(index + 1))
259
- @index += 1
260
- else
261
- terminal_parse_failure("any character")
262
- r18 = nil
263
- end
264
- s15 << r18
265
- end
266
- if s15.last
267
- r15 = instantiate_node(SyntaxNode,input, i15...index, s15)
268
- r15.extend(Comment2)
269
- else
270
- @index = i15
271
- r15 = nil
272
- end
273
- if r15
274
- s14 << r15
275
- else
276
- break
277
- end
278
- end
279
- r14 = instantiate_node(SyntaxNode,input, i14...index, s14)
280
- s11 << r14
281
- if r14
282
- if has_terminal?("\n", false, index)
283
- r19 = instantiate_node(SyntaxNode,input, index...(index + 1))
284
- @index += 1
285
- else
286
- terminal_parse_failure("\n")
287
- r19 = nil
288
- end
289
- s11 << r19
290
- if r19
291
- r20 = _nt_ws
292
- s11 << r20
293
- end
294
- end
295
- end
296
- end
297
- if s11.last
298
- r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
299
- r11.extend(Comment3)
300
- else
301
- @index = i11
302
- r11 = nil
303
- end
304
- if r11
305
- r0 = r11
306
- else
307
- @index = i0
308
- r0 = nil
309
- end
310
- end
311
-
312
- node_cache[:comment][start_index] = r0
313
-
314
- r0
315
- end
316
-
317
- module Ruleset0
318
- def selectors
319
- elements[0]
320
- end
321
-
322
- def ws
323
- elements[2]
324
- end
325
-
326
- def primary
327
- elements[3]
328
- end
329
-
330
- def ws
331
- elements[4]
332
- end
333
-
334
- def ws
335
- elements[6]
336
- end
337
- end
338
-
339
- module Ruleset1
340
- def build env
341
- # Build the ruleset for each selector
342
- selectors.build(env, :ruleset).each do |sel|
343
- primary.build sel
344
- end
345
- end
346
- end
347
-
348
- module Ruleset2
349
- def ws
350
- elements[0]
351
- end
352
-
353
- def selectors
354
- elements[1]
355
- end
356
-
357
- def ws
358
- elements[3]
359
- end
360
- end
361
-
362
- module Ruleset3
363
- def build env
364
- selectors.build(env, :mixin).each do |path|
365
- rules = path.inject(env.root) do |current, node|
366
- current.descend(node.selector, node) or raise MixinNameError, path.join
367
- end.rules
368
- env.rules += rules
369
- end
370
- end
371
- end
372
-
373
- def _nt_ruleset
374
- start_index = index
375
- if node_cache[:ruleset].has_key?(index)
376
- cached = node_cache[:ruleset][index]
377
- @index = cached.interval.end if cached
378
- return cached
379
- end
380
-
381
- i0 = index
382
- i1, s1 = index, []
383
- r2 = _nt_selectors
384
- s1 << r2
385
- if r2
386
- if has_terminal?("{", false, index)
387
- r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
388
- @index += 1
389
- else
390
- terminal_parse_failure("{")
391
- r3 = nil
392
- end
393
- s1 << r3
394
- if r3
395
- r4 = _nt_ws
396
- s1 << r4
397
- if r4
398
- r5 = _nt_primary
399
- s1 << r5
400
- if r5
401
- r6 = _nt_ws
402
- s1 << r6
403
- if r6
404
- if has_terminal?("}", false, index)
405
- r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
406
- @index += 1
407
- else
408
- terminal_parse_failure("}")
409
- r7 = nil
410
- end
411
- s1 << r7
412
- if r7
413
- r8 = _nt_ws
414
- s1 << r8
415
- end
416
- end
417
- end
418
- end
419
- end
420
- end
421
- if s1.last
422
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
423
- r1.extend(Ruleset0)
424
- r1.extend(Ruleset1)
425
- else
426
- @index = i1
427
- r1 = nil
428
- end
429
- if r1
430
- r0 = r1
431
- else
432
- i9, s9 = index, []
433
- r10 = _nt_ws
434
- s9 << r10
435
- if r10
436
- r11 = _nt_selectors
437
- s9 << r11
438
- if r11
439
- if has_terminal?(';', false, index)
440
- r12 = instantiate_node(SyntaxNode,input, index...(index + 1))
441
- @index += 1
442
- else
443
- terminal_parse_failure(';')
444
- r12 = nil
445
- end
446
- s9 << r12
447
- if r12
448
- r13 = _nt_ws
449
- s9 << r13
450
- end
451
- end
452
- end
453
- if s9.last
454
- r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
455
- r9.extend(Ruleset2)
456
- r9.extend(Ruleset3)
457
- else
458
- @index = i9
459
- r9 = nil
460
- end
461
- if r9
462
- r0 = r9
463
- else
464
- @index = i0
465
- r0 = nil
466
- end
467
- end
468
-
469
- node_cache[:ruleset][start_index] = r0
470
-
471
- r0
472
- end
473
-
474
- module Import0
475
- def S
476
- elements[1]
477
- end
478
-
479
- def url
480
- elements[2]
481
- end
482
-
483
- def s
484
- elements[4]
485
- end
486
-
487
- def ws
488
- elements[6]
489
- end
490
- end
491
-
492
- module Import1
493
- def build env
494
- path = File.join(env.root.file, url.value)
495
- path += '.less' unless path =~ /\.(le|c)ss$/
496
- if File.exist? path
497
- imported = Less::Engine.new(File.new(path)).to_tree
498
- env.rules += imported.rules
499
- else
500
- raise ImportError, path
501
- end
502
- end
503
- end
504
-
505
- def _nt_import
506
- start_index = index
507
- if node_cache[:import].has_key?(index)
508
- cached = node_cache[:import][index]
509
- @index = cached.interval.end if cached
510
- return cached
511
- end
512
-
513
- i0, s0 = index, []
514
- if has_terminal?("@import", false, index)
515
- r1 = instantiate_node(SyntaxNode,input, index...(index + 7))
516
- @index += 7
517
- else
518
- terminal_parse_failure("@import")
519
- r1 = nil
520
- end
521
- s0 << r1
522
- if r1
523
- r2 = _nt_S
524
- s0 << r2
525
- if r2
526
- i3 = index
527
- r4 = _nt_string
528
- if r4
529
- r3 = r4
530
- else
531
- r5 = _nt_url
532
- if r5
533
- r3 = r5
534
- else
535
- @index = i3
536
- r3 = nil
537
- end
538
- end
539
- s0 << r3
540
- if r3
541
- r7 = _nt_medias
542
- if r7
543
- r6 = r7
544
- else
545
- r6 = instantiate_node(SyntaxNode,input, index...index)
546
- end
547
- s0 << r6
548
- if r6
549
- r8 = _nt_s
550
- s0 << r8
551
- if r8
552
- if has_terminal?(';', false, index)
553
- r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
554
- @index += 1
555
- else
556
- terminal_parse_failure(';')
557
- r9 = nil
558
- end
559
- s0 << r9
560
- if r9
561
- r10 = _nt_ws
562
- s0 << r10
563
- end
564
- end
565
- end
566
- end
567
- end
568
- end
569
- if s0.last
570
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
571
- r0.extend(Import0)
572
- r0.extend(Import1)
573
- else
574
- @index = i0
575
- r0 = nil
576
- end
577
-
578
- node_cache[:import][start_index] = r0
579
-
580
- r0
581
- end
582
-
583
- module Url0
584
- def path
585
- elements[1]
586
- end
587
-
588
- end
589
-
590
- module Url1
591
- def build env = nil
592
- Node::String.new CGI.unescape(path.text_value)
593
- end
594
-
595
- def value
596
- build
597
- end
598
- end
599
-
600
- def _nt_url
601
- start_index = index
602
- if node_cache[:url].has_key?(index)
603
- cached = node_cache[:url][index]
604
- @index = cached.interval.end if cached
605
- return cached
606
- end
607
-
608
- i0, s0 = index, []
609
- if has_terminal?('url(', false, index)
610
- r1 = instantiate_node(SyntaxNode,input, index...(index + 4))
611
- @index += 4
612
- else
613
- terminal_parse_failure('url(')
614
- r1 = nil
615
- end
616
- s0 << r1
617
- if r1
618
- i2 = index
619
- r3 = _nt_string
620
- if r3
621
- r2 = r3
622
- else
623
- s4, i4 = [], index
624
- loop do
625
- if has_terminal?('\G[-a-zA-Z0-9_%$/.&=:;#+?]', true, index)
626
- r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
627
- @index += 1
628
- else
629
- r5 = nil
630
- end
631
- if r5
632
- s4 << r5
633
- else
634
- break
635
- end
636
- end
637
- if s4.empty?
638
- @index = i4
639
- r4 = nil
640
- else
641
- r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
642
- end
643
- if r4
644
- r2 = r4
645
- else
646
- @index = i2
647
- r2 = nil
648
- end
649
- end
650
- s0 << r2
651
- if r2
652
- if has_terminal?(')', false, index)
653
- r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
654
- @index += 1
655
- else
656
- terminal_parse_failure(')')
657
- r6 = nil
658
- end
659
- s0 << r6
660
- end
661
- end
662
- if s0.last
663
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
664
- r0.extend(Url0)
665
- r0.extend(Url1)
666
- else
667
- @index = i0
668
- r0 = nil
669
- end
670
-
671
- node_cache[:url][start_index] = r0
672
-
673
- r0
674
- end
675
-
676
- module Medias0
677
- def s
678
- elements[0]
679
- end
680
-
681
- def s
682
- elements[2]
683
- end
684
-
685
- end
686
-
687
- module Medias1
688
- end
689
-
690
- def _nt_medias
691
- start_index = index
692
- if node_cache[:medias].has_key?(index)
693
- cached = node_cache[:medias][index]
694
- @index = cached.interval.end if cached
695
- return cached
696
- end
697
-
698
- i0, s0 = index, []
699
- s1, i1 = [], index
700
- loop do
701
- if has_terminal?('\G[-a-z]', true, index)
702
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
703
- @index += 1
704
- else
705
- r2 = nil
706
- end
707
- if r2
708
- s1 << r2
709
- else
710
- break
711
- end
712
- end
713
- if s1.empty?
714
- @index = i1
715
- r1 = nil
716
- else
717
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
718
- end
719
- s0 << r1
720
- if r1
721
- s3, i3 = [], index
722
- loop do
723
- i4, s4 = index, []
724
- r5 = _nt_s
725
- s4 << r5
726
- if r5
727
- if has_terminal?(',', false, index)
728
- r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
729
- @index += 1
730
- else
731
- terminal_parse_failure(',')
732
- r6 = nil
733
- end
734
- s4 << r6
735
- if r6
736
- r7 = _nt_s
737
- s4 << r7
738
- if r7
739
- s8, i8 = [], index
740
- loop do
741
- if has_terminal?('\G[a-z]', true, index)
742
- r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
743
- @index += 1
744
- else
745
- r9 = nil
746
- end
747
- if r9
748
- s8 << r9
749
- else
750
- break
751
- end
752
- end
753
- if s8.empty?
754
- @index = i8
755
- r8 = nil
756
- else
757
- r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
758
- end
759
- s4 << r8
760
- end
761
- end
762
- end
763
- if s4.last
764
- r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
765
- r4.extend(Medias0)
766
- else
767
- @index = i4
768
- r4 = nil
769
- end
770
- if r4
771
- s3 << r4
772
- else
773
- break
774
- end
775
- end
776
- r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
777
- s0 << r3
778
- end
779
- if s0.last
780
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
781
- r0.extend(Medias1)
782
- else
783
- @index = i0
784
- r0 = nil
785
- end
786
-
787
- node_cache[:medias][start_index] = r0
788
-
789
- r0
790
- end
791
-
792
- module Selectors0
793
- def s
794
- elements[0]
795
- end
796
-
797
- def ws
798
- elements[2]
799
- end
800
-
801
- def selector
802
- elements[3]
803
- end
804
- end
805
-
806
- module Selectors1
807
- def ws
808
- elements[0]
809
- end
810
-
811
- def selector
812
- elements[1]
813
- end
814
-
815
- def tail
816
- elements[2]
817
- end
818
-
819
- def ws
820
- elements[3]
821
- end
822
- end
823
-
824
- module Selectors2
825
- def build env, method
826
- all.map do |e|
827
- e.send(method, env) if e.respond_to? method
828
- end.compact
829
- end
830
-
831
- def all
832
- [selector] + tail.elements.map {|e| e.selector }
833
- end
834
- end
835
-
836
- def _nt_selectors
837
- start_index = index
838
- if node_cache[:selectors].has_key?(index)
839
- cached = node_cache[:selectors][index]
840
- @index = cached.interval.end if cached
841
- return cached
842
- end
843
-
844
- i0, s0 = index, []
845
- r1 = _nt_ws
846
- s0 << r1
847
- if r1
848
- r2 = _nt_selector
849
- s0 << r2
850
- if r2
851
- s3, i3 = [], index
852
- loop do
853
- i4, s4 = index, []
854
- r5 = _nt_s
855
- s4 << r5
856
- if r5
857
- if has_terminal?(',', false, index)
858
- r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
859
- @index += 1
860
- else
861
- terminal_parse_failure(',')
862
- r6 = nil
863
- end
864
- s4 << r6
865
- if r6
866
- r7 = _nt_ws
867
- s4 << r7
868
- if r7
869
- r8 = _nt_selector
870
- s4 << r8
871
- end
872
- end
873
- end
874
- if s4.last
875
- r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
876
- r4.extend(Selectors0)
877
- else
878
- @index = i4
879
- r4 = nil
880
- end
881
- if r4
882
- s3 << r4
883
- else
884
- break
885
- end
886
- end
887
- r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
888
- s0 << r3
889
- if r3
890
- r9 = _nt_ws
891
- s0 << r9
892
- end
893
- end
894
- end
895
- if s0.last
896
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
897
- r0.extend(Selectors1)
898
- r0.extend(Selectors2)
899
- else
900
- @index = i0
901
- r0 = nil
902
- end
903
-
904
- node_cache[:selectors][start_index] = r0
905
-
906
- r0
907
- end
908
-
909
- module Selector0
910
- def s
911
- elements[0]
912
- end
913
-
914
- def select
915
- elements[1]
916
- end
917
-
918
- def element
919
- elements[2]
920
- end
921
-
922
- def s
923
- elements[3]
924
- end
925
- end
926
-
927
- module Selector1
928
- def sel
929
- elements[0]
930
- end
931
-
932
- end
933
-
934
- module Selector2
935
- def ruleset env
936
- sel.elements.inject(env) do |node, e|
937
- node << Node::Element.new(e.element.text_value, e.select.text_value)
938
- node.last
939
- end
940
- end
941
-
942
- def mixin env
943
- sel.elements.map do |e|
944
- Node::Element.new(e.element.text_value, e.select.text_value)
945
- end
946
- end
947
- end
948
-
949
- def _nt_selector
950
- start_index = index
951
- if node_cache[:selector].has_key?(index)
952
- cached = node_cache[:selector][index]
953
- @index = cached.interval.end if cached
954
- return cached
955
- end
956
-
957
- i0, s0 = index, []
958
- s1, i1 = [], index
959
- loop do
960
- i2, s2 = index, []
961
- r3 = _nt_s
962
- s2 << r3
963
- if r3
964
- r4 = _nt_select
965
- s2 << r4
966
- if r4
967
- r5 = _nt_element
968
- s2 << r5
969
- if r5
970
- r6 = _nt_s
971
- s2 << r6
972
- end
973
- end
974
- end
975
- if s2.last
976
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
977
- r2.extend(Selector0)
978
- else
979
- @index = i2
980
- r2 = nil
981
- end
982
- if r2
983
- s1 << r2
984
- else
985
- break
986
- end
987
- end
988
- if s1.empty?
989
- @index = i1
990
- r1 = nil
991
- else
992
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
993
- end
994
- s0 << r1
995
- if r1
996
- r8 = _nt_arguments
997
- if r8
998
- r7 = r8
999
- else
1000
- r7 = instantiate_node(SyntaxNode,input, index...index)
1001
- end
1002
- s0 << r7
1003
- end
1004
- if s0.last
1005
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1006
- r0.extend(Selector1)
1007
- r0.extend(Selector2)
1008
- else
1009
- @index = i0
1010
- r0 = nil
1011
- end
1012
-
1013
- node_cache[:selector][start_index] = r0
1014
-
1015
- r0
1016
- end
1017
-
1018
- module Declaration0
1019
- def ws
1020
- elements[0]
1021
- end
1022
-
1023
- end
1024
-
1025
- module Declaration1
1026
- def ws
1027
- elements[0]
1028
- end
1029
-
1030
- def name
1031
- elements[1]
1032
- end
1033
-
1034
- def s
1035
- elements[2]
1036
- end
1037
-
1038
- def s
1039
- elements[4]
1040
- end
1041
-
1042
- def expressions
1043
- elements[5]
1044
- end
1045
-
1046
- def s
1047
- elements[6]
1048
- end
1049
-
1050
- def ws
1051
- elements[8]
1052
- end
1053
- end
1054
-
1055
- module Declaration2
1056
- def build env
1057
- env << (name.text_value =~ /^@/ ?
1058
- Node::Variable : Node::Property).new(name.text_value, expressions.build(env), env)
1059
-
1060
- end
1061
- # Empty rule
1062
- end
1063
-
1064
- module Declaration3
1065
- def ws
1066
- elements[0]
1067
- end
1068
-
1069
- def ident
1070
- elements[1]
1071
- end
1072
-
1073
- def s
1074
- elements[2]
1075
- end
1076
-
1077
- def s
1078
- elements[4]
1079
- end
1080
-
1081
- def ws
1082
- elements[6]
1083
- end
1084
- end
1085
-
1086
- def _nt_declaration
1087
- start_index = index
1088
- if node_cache[:declaration].has_key?(index)
1089
- cached = node_cache[:declaration][index]
1090
- @index = cached.interval.end if cached
1091
- return cached
1092
- end
1093
-
1094
- i0 = index
1095
- i1, s1 = index, []
1096
- r2 = _nt_ws
1097
- s1 << r2
1098
- if r2
1099
- i3 = index
1100
- r4 = _nt_ident
1101
- if r4
1102
- r3 = r4
1103
- else
1104
- r5 = _nt_variable
1105
- if r5
1106
- r3 = r5
1107
- else
1108
- @index = i3
1109
- r3 = nil
1110
- end
1111
- end
1112
- s1 << r3
1113
- if r3
1114
- r6 = _nt_s
1115
- s1 << r6
1116
- if r6
1117
- if has_terminal?(':', false, index)
1118
- r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
1119
- @index += 1
1120
- else
1121
- terminal_parse_failure(':')
1122
- r7 = nil
1123
- end
1124
- s1 << r7
1125
- if r7
1126
- r8 = _nt_s
1127
- s1 << r8
1128
- if r8
1129
- r9 = _nt_expressions
1130
- s1 << r9
1131
- if r9
1132
- r10 = _nt_s
1133
- s1 << r10
1134
- if r10
1135
- i11 = index
1136
- if has_terminal?(';', false, index)
1137
- r12 = instantiate_node(SyntaxNode,input, index...(index + 1))
1138
- @index += 1
1139
- else
1140
- terminal_parse_failure(';')
1141
- r12 = nil
1142
- end
1143
- if r12
1144
- r11 = r12
1145
- else
1146
- i13, s13 = index, []
1147
- r14 = _nt_ws
1148
- s13 << r14
1149
- if r14
1150
- i15 = index
1151
- if has_terminal?('}', false, index)
1152
- r16 = instantiate_node(SyntaxNode,input, index...(index + 1))
1153
- @index += 1
1154
- else
1155
- terminal_parse_failure('}')
1156
- r16 = nil
1157
- end
1158
- if r16
1159
- @index = i15
1160
- r15 = instantiate_node(SyntaxNode,input, index...index)
1161
- else
1162
- r15 = nil
1163
- end
1164
- s13 << r15
1165
- end
1166
- if s13.last
1167
- r13 = instantiate_node(SyntaxNode,input, i13...index, s13)
1168
- r13.extend(Declaration0)
1169
- else
1170
- @index = i13
1171
- r13 = nil
1172
- end
1173
- if r13
1174
- r11 = r13
1175
- else
1176
- @index = i11
1177
- r11 = nil
1178
- end
1179
- end
1180
- s1 << r11
1181
- if r11
1182
- r17 = _nt_ws
1183
- s1 << r17
1184
- end
1185
- end
1186
- end
1187
- end
1188
- end
1189
- end
1190
- end
1191
- end
1192
- if s1.last
1193
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1194
- r1.extend(Declaration1)
1195
- r1.extend(Declaration2)
1196
- else
1197
- @index = i1
1198
- r1 = nil
1199
- end
1200
- if r1
1201
- r0 = r1
1202
- else
1203
- i18, s18 = index, []
1204
- r19 = _nt_ws
1205
- s18 << r19
1206
- if r19
1207
- r20 = _nt_ident
1208
- s18 << r20
1209
- if r20
1210
- r21 = _nt_s
1211
- s18 << r21
1212
- if r21
1213
- if has_terminal?(':', false, index)
1214
- r22 = instantiate_node(SyntaxNode,input, index...(index + 1))
1215
- @index += 1
1216
- else
1217
- terminal_parse_failure(':')
1218
- r22 = nil
1219
- end
1220
- s18 << r22
1221
- if r22
1222
- r23 = _nt_s
1223
- s18 << r23
1224
- if r23
1225
- if has_terminal?(';', false, index)
1226
- r24 = instantiate_node(SyntaxNode,input, index...(index + 1))
1227
- @index += 1
1228
- else
1229
- terminal_parse_failure(';')
1230
- r24 = nil
1231
- end
1232
- s18 << r24
1233
- if r24
1234
- r25 = _nt_ws
1235
- s18 << r25
1236
- end
1237
- end
1238
- end
1239
- end
1240
- end
1241
- end
1242
- if s18.last
1243
- r18 = instantiate_node(SyntaxNode,input, i18...index, s18)
1244
- r18.extend(Declaration3)
1245
- else
1246
- @index = i18
1247
- r18 = nil
1248
- end
1249
- if r18
1250
- r0 = r18
1251
- else
1252
- @index = i0
1253
- r0 = nil
1254
- end
1255
- end
1256
-
1257
- node_cache[:declaration][start_index] = r0
1258
-
1259
- r0
1260
- end
1261
-
1262
- module Expressions0
1263
- def build env
1264
- elements.map do |e|
1265
- e.build(env) if e.respond_to? :build
1266
- end.compact
1267
- end
1268
- end
1269
-
1270
- def _nt_expressions
1271
- start_index = index
1272
- if node_cache[:expressions].has_key?(index)
1273
- cached = node_cache[:expressions][index]
1274
- @index = cached.interval.end if cached
1275
- return cached
1276
- end
1277
-
1278
- s0, i0 = [], index
1279
- loop do
1280
- r1 = _nt_expression
1281
- if r1
1282
- s0 << r1
1283
- else
1284
- break
1285
- end
1286
- end
1287
- if s0.empty?
1288
- @index = i0
1289
- r0 = nil
1290
- else
1291
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1292
- r0.extend(Expressions0)
1293
- end
1294
-
1295
- node_cache[:expressions][start_index] = r0
1296
-
1297
- r0
1298
- end
1299
-
1300
- module Expression0
1301
- def s
1302
- elements[0]
1303
- end
1304
-
1305
- def s
1306
- elements[2]
1307
- end
1308
-
1309
- def expressions
1310
- elements[3]
1311
- end
1312
-
1313
- def s
1314
- elements[4]
1315
- end
1316
-
1317
- def s
1318
- elements[6]
1319
- end
1320
- end
1321
-
1322
- module Expression1
1323
- def build env
1324
- Node::Expression.new(['('] + expressions.build(env).flatten + [')'])
1325
- end
1326
- end
1327
-
1328
- module Expression2
1329
- def operator
1330
- elements[0]
1331
- end
1332
-
1333
- def entity
1334
- elements[1]
1335
- end
1336
- end
1337
-
1338
- module Expression3
1339
- def entity
1340
- elements[0]
1341
- end
1342
-
1343
- def tail
1344
- elements[1]
1345
- end
1346
-
1347
- def ws
1348
- elements[2]
1349
- end
1350
- end
1351
-
1352
- module Expression4
1353
- def build env
1354
- exp = all.map do |e|
1355
- e.method(:build).arity.zero??
1356
- e.build : e.build(env) if e.respond_to? :build
1357
- end.dissolve
1358
- exp.is_a?(Array) ? Node::Expression.new(exp) : exp
1359
- end
1360
-
1361
- def all
1362
- [entity] + tail.elements.map {|i| [i.operator, i.entity] }.flatten.compact
1363
- end
1364
- end
1365
-
1366
- def _nt_expression
1367
- start_index = index
1368
- if node_cache[:expression].has_key?(index)
1369
- cached = node_cache[:expression][index]
1370
- @index = cached.interval.end if cached
1371
- return cached
1372
- end
1373
-
1374
- i0 = index
1375
- i1, s1 = index, []
1376
- r2 = _nt_s
1377
- s1 << r2
1378
- if r2
1379
- if has_terminal?('(', false, index)
1380
- r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
1381
- @index += 1
1382
- else
1383
- terminal_parse_failure('(')
1384
- r3 = nil
1385
- end
1386
- s1 << r3
1387
- if r3
1388
- r4 = _nt_s
1389
- s1 << r4
1390
- if r4
1391
- r5 = _nt_expressions
1392
- s1 << r5
1393
- if r5
1394
- r6 = _nt_s
1395
- s1 << r6
1396
- if r6
1397
- if has_terminal?(')', false, index)
1398
- r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
1399
- @index += 1
1400
- else
1401
- terminal_parse_failure(')')
1402
- r7 = nil
1403
- end
1404
- s1 << r7
1405
- if r7
1406
- r8 = _nt_s
1407
- s1 << r8
1408
- end
1409
- end
1410
- end
1411
- end
1412
- end
1413
- end
1414
- if s1.last
1415
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1416
- r1.extend(Expression0)
1417
- r1.extend(Expression1)
1418
- else
1419
- @index = i1
1420
- r1 = nil
1421
- end
1422
- if r1
1423
- r0 = r1
1424
- else
1425
- i9, s9 = index, []
1426
- r10 = _nt_entity
1427
- s9 << r10
1428
- if r10
1429
- s11, i11 = [], index
1430
- loop do
1431
- i12, s12 = index, []
1432
- r13 = _nt_operator
1433
- s12 << r13
1434
- if r13
1435
- r14 = _nt_entity
1436
- s12 << r14
1437
- end
1438
- if s12.last
1439
- r12 = instantiate_node(SyntaxNode,input, i12...index, s12)
1440
- r12.extend(Expression2)
1441
- else
1442
- @index = i12
1443
- r12 = nil
1444
- end
1445
- if r12
1446
- s11 << r12
1447
- else
1448
- break
1449
- end
1450
- end
1451
- r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
1452
- s9 << r11
1453
- if r11
1454
- r15 = _nt_ws
1455
- s9 << r15
1456
- end
1457
- end
1458
- if s9.last
1459
- r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
1460
- r9.extend(Expression3)
1461
- r9.extend(Expression4)
1462
- else
1463
- @index = i9
1464
- r9 = nil
1465
- end
1466
- if r9
1467
- r0 = r9
1468
- else
1469
- @index = i0
1470
- r0 = nil
1471
- end
1472
- end
1473
-
1474
- node_cache[:expression][start_index] = r0
1475
-
1476
- r0
1477
- end
1478
-
1479
- def _nt_entity
1480
- start_index = index
1481
- if node_cache[:entity].has_key?(index)
1482
- cached = node_cache[:entity][index]
1483
- @index = cached.interval.end if cached
1484
- return cached
1485
- end
1486
-
1487
- i0 = index
1488
- r1 = _nt_function
1489
- if r1
1490
- r0 = r1
1491
- else
1492
- r2 = _nt_fonts
1493
- if r2
1494
- r0 = r2
1495
- else
1496
- r3 = _nt_keyword
1497
- if r3
1498
- r0 = r3
1499
- else
1500
- r4 = _nt_accessor
1501
- if r4
1502
- r0 = r4
1503
- else
1504
- r5 = _nt_variable
1505
- if r5
1506
- r0 = r5
1507
- else
1508
- r6 = _nt_literal
1509
- if r6
1510
- r0 = r6
1511
- else
1512
- r7 = _nt_important
1513
- if r7
1514
- r0 = r7
1515
- else
1516
- @index = i0
1517
- r0 = nil
1518
- end
1519
- end
1520
- end
1521
- end
1522
- end
1523
- end
1524
- end
1525
-
1526
- node_cache[:entity][start_index] = r0
1527
-
1528
- r0
1529
- end
1530
-
1531
- module Fonts0
1532
- def s
1533
- elements[0]
1534
- end
1535
-
1536
- def s
1537
- elements[2]
1538
- end
1539
-
1540
- def font
1541
- elements[3]
1542
- end
1543
- end
1544
-
1545
- module Fonts1
1546
- def font
1547
- elements[0]
1548
- end
1549
-
1550
- def family
1551
- elements[1]
1552
- end
1553
- end
1554
-
1555
- module Fonts2
1556
- def build
1557
- Node::FontFamily.new(all.map(&:build))
1558
- end
1559
-
1560
- def all
1561
- [font] + family.elements.map {|f| f.font }
1562
- end
1563
- end
1564
-
1565
- def _nt_fonts
1566
- start_index = index
1567
- if node_cache[:fonts].has_key?(index)
1568
- cached = node_cache[:fonts][index]
1569
- @index = cached.interval.end if cached
1570
- return cached
1571
- end
1572
-
1573
- i0, s0 = index, []
1574
- r1 = _nt_font
1575
- s0 << r1
1576
- if r1
1577
- s2, i2 = [], index
1578
- loop do
1579
- i3, s3 = index, []
1580
- r4 = _nt_s
1581
- s3 << r4
1582
- if r4
1583
- if has_terminal?(',', false, index)
1584
- r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
1585
- @index += 1
1586
- else
1587
- terminal_parse_failure(',')
1588
- r5 = nil
1589
- end
1590
- s3 << r5
1591
- if r5
1592
- r6 = _nt_s
1593
- s3 << r6
1594
- if r6
1595
- r7 = _nt_font
1596
- s3 << r7
1597
- end
1598
- end
1599
- end
1600
- if s3.last
1601
- r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
1602
- r3.extend(Fonts0)
1603
- else
1604
- @index = i3
1605
- r3 = nil
1606
- end
1607
- if r3
1608
- s2 << r3
1609
- else
1610
- break
1611
- end
1612
- end
1613
- if s2.empty?
1614
- @index = i2
1615
- r2 = nil
1616
- else
1617
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1618
- end
1619
- s0 << r2
1620
- end
1621
- if s0.last
1622
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1623
- r0.extend(Fonts1)
1624
- r0.extend(Fonts2)
1625
- else
1626
- @index = i0
1627
- r0 = nil
1628
- end
1629
-
1630
- node_cache[:fonts][start_index] = r0
1631
-
1632
- r0
1633
- end
1634
-
1635
- module Font0
1636
- end
1637
-
1638
- module Font1
1639
- def build
1640
- Node::Keyword.new(text_value)
1641
- end
1642
- end
1643
-
1644
- module Font2
1645
- def build
1646
- Node::String.new(text_value)
1647
- end
1648
- end
1649
-
1650
- def _nt_font
1651
- start_index = index
1652
- if node_cache[:font].has_key?(index)
1653
- cached = node_cache[:font][index]
1654
- @index = cached.interval.end if cached
1655
- return cached
1656
- end
1657
-
1658
- i0 = index
1659
- i1, s1 = index, []
1660
- if has_terminal?('\G[a-zA-Z]', true, index)
1661
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
1662
- @index += 1
1663
- else
1664
- r2 = nil
1665
- end
1666
- s1 << r2
1667
- if r2
1668
- s3, i3 = [], index
1669
- loop do
1670
- if has_terminal?('\G[-a-zA-Z0-9]', true, index)
1671
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
1672
- @index += 1
1673
- else
1674
- r4 = nil
1675
- end
1676
- if r4
1677
- s3 << r4
1678
- else
1679
- break
1680
- end
1681
- end
1682
- r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
1683
- s1 << r3
1684
- end
1685
- if s1.last
1686
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1687
- r1.extend(Font0)
1688
- r1.extend(Font1)
1689
- else
1690
- @index = i1
1691
- r1 = nil
1692
- end
1693
- if r1
1694
- r0 = r1
1695
- else
1696
- r5 = _nt_string
1697
- r5.extend(Font2)
1698
- if r5
1699
- r0 = r5
1700
- else
1701
- @index = i0
1702
- r0 = nil
1703
- end
1704
- end
1705
-
1706
- node_cache[:font][start_index] = r0
1707
-
1708
- r0
1709
- end
1710
-
1711
- module Ident0
1712
- end
1713
-
1714
- def _nt_ident
1715
- start_index = index
1716
- if node_cache[:ident].has_key?(index)
1717
- cached = node_cache[:ident][index]
1718
- @index = cached.interval.end if cached
1719
- return cached
1720
- end
1721
-
1722
- i0, s0 = index, []
1723
- if has_terminal?('*', false, index)
1724
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
1725
- @index += 1
1726
- else
1727
- terminal_parse_failure('*')
1728
- r2 = nil
1729
- end
1730
- if r2
1731
- r1 = r2
1732
- else
1733
- r1 = instantiate_node(SyntaxNode,input, index...index)
1734
- end
1735
- s0 << r1
1736
- if r1
1737
- if has_terminal?('-', false, index)
1738
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
1739
- @index += 1
1740
- else
1741
- terminal_parse_failure('-')
1742
- r4 = nil
1743
- end
1744
- if r4
1745
- r3 = r4
1746
- else
1747
- r3 = instantiate_node(SyntaxNode,input, index...index)
1748
- end
1749
- s0 << r3
1750
- if r3
1751
- s5, i5 = [], index
1752
- loop do
1753
- if has_terminal?('\G[-a-z0-9_]', true, index)
1754
- r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
1755
- @index += 1
1756
- else
1757
- r6 = nil
1758
- end
1759
- if r6
1760
- s5 << r6
1761
- else
1762
- break
1763
- end
1764
- end
1765
- if s5.empty?
1766
- @index = i5
1767
- r5 = nil
1768
- else
1769
- r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
1770
- end
1771
- s0 << r5
1772
- end
1773
- end
1774
- if s0.last
1775
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1776
- r0.extend(Ident0)
1777
- else
1778
- @index = i0
1779
- r0 = nil
1780
- end
1781
-
1782
- node_cache[:ident][start_index] = r0
1783
-
1784
- r0
1785
- end
1786
-
1787
- module Variable0
1788
- end
1789
-
1790
- module Variable1
1791
- def build
1792
- Node::Variable.new(text_value)
1793
- end
1794
- end
1795
-
1796
- def _nt_variable
1797
- start_index = index
1798
- if node_cache[:variable].has_key?(index)
1799
- cached = node_cache[:variable][index]
1800
- @index = cached.interval.end if cached
1801
- return cached
1802
- end
1803
-
1804
- i0, s0 = index, []
1805
- if has_terminal?('@', false, index)
1806
- r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
1807
- @index += 1
1808
- else
1809
- terminal_parse_failure('@')
1810
- r1 = nil
1811
- end
1812
- s0 << r1
1813
- if r1
1814
- s2, i2 = [], index
1815
- loop do
1816
- if has_terminal?('\G[-a-zA-Z0-9_]', true, index)
1817
- r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
1818
- @index += 1
1819
- else
1820
- r3 = nil
1821
- end
1822
- if r3
1823
- s2 << r3
1824
- else
1825
- break
1826
- end
1827
- end
1828
- if s2.empty?
1829
- @index = i2
1830
- r2 = nil
1831
- else
1832
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1833
- end
1834
- s0 << r2
1835
- end
1836
- if s0.last
1837
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1838
- r0.extend(Variable0)
1839
- r0.extend(Variable1)
1840
- else
1841
- @index = i0
1842
- r0 = nil
1843
- end
1844
-
1845
- node_cache[:variable][start_index] = r0
1846
-
1847
- r0
1848
- end
1849
-
1850
- module Element0
1851
- end
1852
-
1853
- module Element1
1854
- end
1855
-
1856
- def _nt_element
1857
- start_index = index
1858
- if node_cache[:element].has_key?(index)
1859
- cached = node_cache[:element][index]
1860
- @index = cached.interval.end if cached
1861
- return cached
1862
- end
1863
-
1864
- i0 = index
1865
- i1, s1 = index, []
1866
- i2 = index
1867
- r3 = _nt_class_id
1868
- if r3
1869
- r2 = r3
1870
- else
1871
- r4 = _nt_tag
1872
- if r4
1873
- r2 = r4
1874
- else
1875
- r5 = _nt_ident
1876
- if r5
1877
- r2 = r5
1878
- else
1879
- @index = i2
1880
- r2 = nil
1881
- end
1882
- end
1883
- end
1884
- s1 << r2
1885
- if r2
1886
- s6, i6 = [], index
1887
- loop do
1888
- r7 = _nt_attribute
1889
- if r7
1890
- s6 << r7
1891
- else
1892
- break
1893
- end
1894
- end
1895
- r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
1896
- s1 << r6
1897
- if r6
1898
- i9, s9 = index, []
1899
- if has_terminal?('(', false, index)
1900
- r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
1901
- @index += 1
1902
- else
1903
- terminal_parse_failure('(')
1904
- r10 = nil
1905
- end
1906
- s9 << r10
1907
- if r10
1908
- r12 = _nt_ident
1909
- if r12
1910
- r11 = r12
1911
- else
1912
- r11 = instantiate_node(SyntaxNode,input, index...index)
1913
- end
1914
- s9 << r11
1915
- if r11
1916
- s13, i13 = [], index
1917
- loop do
1918
- r14 = _nt_attribute
1919
- if r14
1920
- s13 << r14
1921
- else
1922
- break
1923
- end
1924
- end
1925
- r13 = instantiate_node(SyntaxNode,input, i13...index, s13)
1926
- s9 << r13
1927
- if r13
1928
- if has_terminal?(')', false, index)
1929
- r15 = instantiate_node(SyntaxNode,input, index...(index + 1))
1930
- @index += 1
1931
- else
1932
- terminal_parse_failure(')')
1933
- r15 = nil
1934
- end
1935
- s9 << r15
1936
- end
1937
- end
1938
- end
1939
- if s9.last
1940
- r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
1941
- r9.extend(Element0)
1942
- else
1943
- @index = i9
1944
- r9 = nil
1945
- end
1946
- if r9
1947
- r8 = r9
1948
- else
1949
- r8 = instantiate_node(SyntaxNode,input, index...index)
1950
- end
1951
- s1 << r8
1952
- end
1953
- end
1954
- if s1.last
1955
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1956
- r1.extend(Element1)
1957
- else
1958
- @index = i1
1959
- r1 = nil
1960
- end
1961
- if r1
1962
- r0 = r1
1963
- else
1964
- s16, i16 = [], index
1965
- loop do
1966
- r17 = _nt_attribute
1967
- if r17
1968
- s16 << r17
1969
- else
1970
- break
1971
- end
1972
- end
1973
- if s16.empty?
1974
- @index = i16
1975
- r16 = nil
1976
- else
1977
- r16 = instantiate_node(SyntaxNode,input, i16...index, s16)
1978
- end
1979
- if r16
1980
- r0 = r16
1981
- else
1982
- if has_terminal?('@media', false, index)
1983
- r18 = instantiate_node(SyntaxNode,input, index...(index + 6))
1984
- @index += 6
1985
- else
1986
- terminal_parse_failure('@media')
1987
- r18 = nil
1988
- end
1989
- if r18
1990
- r0 = r18
1991
- else
1992
- if has_terminal?('@font-face', false, index)
1993
- r19 = instantiate_node(SyntaxNode,input, index...(index + 10))
1994
- @index += 10
1995
- else
1996
- terminal_parse_failure('@font-face')
1997
- r19 = nil
1998
- end
1999
- if r19
2000
- r0 = r19
2001
- else
2002
- @index = i0
2003
- r0 = nil
2004
- end
2005
- end
2006
- end
2007
- end
2008
-
2009
- node_cache[:element][start_index] = r0
2010
-
2011
- r0
2012
- end
2013
-
2014
- module ClassId0
2015
- end
2016
-
2017
- def _nt_class_id
2018
- start_index = index
2019
- if node_cache[:class_id].has_key?(index)
2020
- cached = node_cache[:class_id][index]
2021
- @index = cached.interval.end if cached
2022
- return cached
2023
- end
2024
-
2025
- i0, s0 = index, []
2026
- r2 = _nt_tag
2027
- if r2
2028
- r1 = r2
2029
- else
2030
- r1 = instantiate_node(SyntaxNode,input, index...index)
2031
- end
2032
- s0 << r1
2033
- if r1
2034
- s3, i3 = [], index
2035
- loop do
2036
- i4 = index
2037
- r5 = _nt_class
2038
- if r5
2039
- r4 = r5
2040
- else
2041
- r6 = _nt_id
2042
- if r6
2043
- r4 = r6
2044
- else
2045
- @index = i4
2046
- r4 = nil
2047
- end
2048
- end
2049
- if r4
2050
- s3 << r4
2051
- else
2052
- break
2053
- end
2054
- end
2055
- if s3.empty?
2056
- @index = i3
2057
- r3 = nil
2058
- else
2059
- r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
2060
- end
2061
- s0 << r3
2062
- end
2063
- if s0.last
2064
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2065
- r0.extend(ClassId0)
2066
- else
2067
- @index = i0
2068
- r0 = nil
2069
- end
2070
-
2071
- node_cache[:class_id][start_index] = r0
2072
-
2073
- r0
2074
- end
2075
-
2076
- module Attribute0
2077
- end
2078
-
2079
- module Attribute1
2080
- def tag
2081
- elements[1]
2082
- end
2083
-
2084
- end
2085
-
2086
- module Attribute2
2087
- end
2088
-
2089
- def _nt_attribute
2090
- start_index = index
2091
- if node_cache[:attribute].has_key?(index)
2092
- cached = node_cache[:attribute][index]
2093
- @index = cached.interval.end if cached
2094
- return cached
2095
- end
2096
-
2097
- i0 = index
2098
- i1, s1 = index, []
2099
- if has_terminal?('[', false, index)
2100
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
2101
- @index += 1
2102
- else
2103
- terminal_parse_failure('[')
2104
- r2 = nil
2105
- end
2106
- s1 << r2
2107
- if r2
2108
- r3 = _nt_tag
2109
- s1 << r3
2110
- if r3
2111
- i4, s4 = index, []
2112
- if has_terminal?('\G[|~*$^]', true, index)
2113
- r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
2114
- @index += 1
2115
- else
2116
- r6 = nil
2117
- end
2118
- if r6
2119
- r5 = r6
2120
- else
2121
- r5 = instantiate_node(SyntaxNode,input, index...index)
2122
- end
2123
- s4 << r5
2124
- if r5
2125
- if has_terminal?('=', false, index)
2126
- r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
2127
- @index += 1
2128
- else
2129
- terminal_parse_failure('=')
2130
- r7 = nil
2131
- end
2132
- s4 << r7
2133
- end
2134
- if s4.last
2135
- r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
2136
- r4.extend(Attribute0)
2137
- else
2138
- @index = i4
2139
- r4 = nil
2140
- end
2141
- s1 << r4
2142
- if r4
2143
- i8 = index
2144
- r9 = _nt_tag
2145
- if r9
2146
- r8 = r9
2147
- else
2148
- r10 = _nt_string
2149
- if r10
2150
- r8 = r10
2151
- else
2152
- @index = i8
2153
- r8 = nil
2154
- end
2155
- end
2156
- s1 << r8
2157
- if r8
2158
- if has_terminal?(']', false, index)
2159
- r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
2160
- @index += 1
2161
- else
2162
- terminal_parse_failure(']')
2163
- r11 = nil
2164
- end
2165
- s1 << r11
2166
- end
2167
- end
2168
- end
2169
- end
2170
- if s1.last
2171
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2172
- r1.extend(Attribute1)
2173
- else
2174
- @index = i1
2175
- r1 = nil
2176
- end
2177
- if r1
2178
- r0 = r1
2179
- else
2180
- i12, s12 = index, []
2181
- if has_terminal?('[', false, index)
2182
- r13 = instantiate_node(SyntaxNode,input, index...(index + 1))
2183
- @index += 1
2184
- else
2185
- terminal_parse_failure('[')
2186
- r13 = nil
2187
- end
2188
- s12 << r13
2189
- if r13
2190
- i14 = index
2191
- r15 = _nt_tag
2192
- if r15
2193
- r14 = r15
2194
- else
2195
- r16 = _nt_string
2196
- if r16
2197
- r14 = r16
2198
- else
2199
- @index = i14
2200
- r14 = nil
2201
- end
2202
- end
2203
- s12 << r14
2204
- if r14
2205
- if has_terminal?(']', false, index)
2206
- r17 = instantiate_node(SyntaxNode,input, index...(index + 1))
2207
- @index += 1
2208
- else
2209
- terminal_parse_failure(']')
2210
- r17 = nil
2211
- end
2212
- s12 << r17
2213
- end
2214
- end
2215
- if s12.last
2216
- r12 = instantiate_node(SyntaxNode,input, i12...index, s12)
2217
- r12.extend(Attribute2)
2218
- else
2219
- @index = i12
2220
- r12 = nil
2221
- end
2222
- if r12
2223
- r0 = r12
2224
- else
2225
- @index = i0
2226
- r0 = nil
2227
- end
2228
- end
2229
-
2230
- node_cache[:attribute][start_index] = r0
2231
-
2232
- r0
2233
- end
2234
-
2235
- module Class0
2236
- end
2237
-
2238
- def _nt_class
2239
- start_index = index
2240
- if node_cache[:class].has_key?(index)
2241
- cached = node_cache[:class][index]
2242
- @index = cached.interval.end if cached
2243
- return cached
2244
- end
2245
-
2246
- i0, s0 = index, []
2247
- if has_terminal?('.', false, index)
2248
- r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
2249
- @index += 1
2250
- else
2251
- terminal_parse_failure('.')
2252
- r1 = nil
2253
- end
2254
- s0 << r1
2255
- if r1
2256
- if has_terminal?('\G[_a-z]', true, index)
2257
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
2258
- @index += 1
2259
- else
2260
- r2 = nil
2261
- end
2262
- s0 << r2
2263
- if r2
2264
- s3, i3 = [], index
2265
- loop do
2266
- if has_terminal?('\G[-a-zA-Z0-9_]', true, index)
2267
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2268
- @index += 1
2269
- else
2270
- r4 = nil
2271
- end
2272
- if r4
2273
- s3 << r4
2274
- else
2275
- break
2276
- end
2277
- end
2278
- r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
2279
- s0 << r3
2280
- end
2281
- end
2282
- if s0.last
2283
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2284
- r0.extend(Class0)
2285
- else
2286
- @index = i0
2287
- r0 = nil
2288
- end
2289
-
2290
- node_cache[:class][start_index] = r0
2291
-
2292
- r0
2293
- end
2294
-
2295
- module Id0
2296
- end
2297
-
2298
- def _nt_id
2299
- start_index = index
2300
- if node_cache[:id].has_key?(index)
2301
- cached = node_cache[:id][index]
2302
- @index = cached.interval.end if cached
2303
- return cached
2304
- end
2305
-
2306
- i0, s0 = index, []
2307
- if has_terminal?('#', false, index)
2308
- r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
2309
- @index += 1
2310
- else
2311
- terminal_parse_failure('#')
2312
- r1 = nil
2313
- end
2314
- s0 << r1
2315
- if r1
2316
- if has_terminal?('\G[_a-z]', true, index)
2317
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
2318
- @index += 1
2319
- else
2320
- r2 = nil
2321
- end
2322
- s0 << r2
2323
- if r2
2324
- s3, i3 = [], index
2325
- loop do
2326
- if has_terminal?('\G[-a-zA-Z0-9_]', true, index)
2327
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2328
- @index += 1
2329
- else
2330
- r4 = nil
2331
- end
2332
- if r4
2333
- s3 << r4
2334
- else
2335
- break
2336
- end
2337
- end
2338
- r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
2339
- s0 << r3
2340
- end
2341
- end
2342
- if s0.last
2343
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2344
- r0.extend(Id0)
2345
- else
2346
- @index = i0
2347
- r0 = nil
2348
- end
2349
-
2350
- node_cache[:id][start_index] = r0
2351
-
2352
- r0
2353
- end
2354
-
2355
- module Tag0
2356
- end
2357
-
2358
- def _nt_tag
2359
- start_index = index
2360
- if node_cache[:tag].has_key?(index)
2361
- cached = node_cache[:tag][index]
2362
- @index = cached.interval.end if cached
2363
- return cached
2364
- end
2365
-
2366
- i0 = index
2367
- i1, s1 = index, []
2368
- if has_terminal?('\G[a-zA-Z]', true, index)
2369
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
2370
- @index += 1
2371
- else
2372
- r2 = nil
2373
- end
2374
- s1 << r2
2375
- if r2
2376
- s3, i3 = [], index
2377
- loop do
2378
- if has_terminal?('\G[-a-zA-Z]', true, index)
2379
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2380
- @index += 1
2381
- else
2382
- r4 = nil
2383
- end
2384
- if r4
2385
- s3 << r4
2386
- else
2387
- break
2388
- end
2389
- end
2390
- r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
2391
- s1 << r3
2392
- if r3
2393
- if has_terminal?('\G[0-9]', true, index)
2394
- r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
2395
- @index += 1
2396
- else
2397
- r6 = nil
2398
- end
2399
- if r6
2400
- r5 = r6
2401
- else
2402
- r5 = instantiate_node(SyntaxNode,input, index...index)
2403
- end
2404
- s1 << r5
2405
- end
2406
- end
2407
- if s1.last
2408
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2409
- r1.extend(Tag0)
2410
- else
2411
- @index = i1
2412
- r1 = nil
2413
- end
2414
- if r1
2415
- r0 = r1
2416
- else
2417
- if has_terminal?('*', false, index)
2418
- r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
2419
- @index += 1
2420
- else
2421
- terminal_parse_failure('*')
2422
- r7 = nil
2423
- end
2424
- if r7
2425
- r0 = r7
2426
- else
2427
- @index = i0
2428
- r0 = nil
2429
- end
2430
- end
2431
-
2432
- node_cache[:tag][start_index] = r0
2433
-
2434
- r0
2435
- end
2436
-
2437
- module Select0
2438
- def s
2439
- elements[0]
2440
- end
2441
-
2442
- def s
2443
- elements[2]
2444
- end
2445
- end
2446
-
2447
- module Select1
2448
- def s
2449
- elements[0]
2450
- end
2451
-
2452
- end
2453
-
2454
- def _nt_select
2455
- start_index = index
2456
- if node_cache[:select].has_key?(index)
2457
- cached = node_cache[:select][index]
2458
- @index = cached.interval.end if cached
2459
- return cached
2460
- end
2461
-
2462
- i1 = index
2463
- i2, s2 = index, []
2464
- r3 = _nt_s
2465
- s2 << r3
2466
- if r3
2467
- if has_terminal?('\G[+>~]', true, index)
2468
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2469
- @index += 1
2470
- else
2471
- r4 = nil
2472
- end
2473
- s2 << r4
2474
- if r4
2475
- r5 = _nt_s
2476
- s2 << r5
2477
- end
2478
- end
2479
- if s2.last
2480
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
2481
- r2.extend(Select0)
2482
- else
2483
- @index = i2
2484
- r2 = nil
2485
- end
2486
- if r2
2487
- r1 = r2
2488
- else
2489
- i6, s6 = index, []
2490
- r7 = _nt_s
2491
- s6 << r7
2492
- if r7
2493
- if has_terminal?(':', false, index)
2494
- r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
2495
- @index += 1
2496
- else
2497
- terminal_parse_failure(':')
2498
- r8 = nil
2499
- end
2500
- s6 << r8
2501
- end
2502
- if s6.last
2503
- r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
2504
- r6.extend(Select1)
2505
- else
2506
- @index = i6
2507
- r6 = nil
2508
- end
2509
- if r6
2510
- r1 = r6
2511
- else
2512
- r9 = _nt_S
2513
- if r9
2514
- r1 = r9
2515
- else
2516
- @index = i1
2517
- r1 = nil
2518
- end
2519
- end
2520
- end
2521
- if r1
2522
- r0 = r1
2523
- else
2524
- r0 = instantiate_node(SyntaxNode,input, index...index)
2525
- end
2526
-
2527
- node_cache[:select][start_index] = r0
2528
-
2529
- r0
2530
- end
2531
-
2532
- module Accessor0
2533
- def ident
2534
- elements[0]
2535
- end
2536
-
2537
- def attr
2538
- elements[2]
2539
- end
2540
-
2541
- end
2542
-
2543
- module Accessor1
2544
- def build env
2545
- env.nearest(ident.text_value)[attr.text_value.delete(%q["'])].evaluate
2546
- end
2547
- end
2548
-
2549
- def _nt_accessor
2550
- start_index = index
2551
- if node_cache[:accessor].has_key?(index)
2552
- cached = node_cache[:accessor][index]
2553
- @index = cached.interval.end if cached
2554
- return cached
2555
- end
2556
-
2557
- i0, s0 = index, []
2558
- i1 = index
2559
- r2 = _nt_class_id
2560
- if r2
2561
- r1 = r2
2562
- else
2563
- r3 = _nt_tag
2564
- if r3
2565
- r1 = r3
2566
- else
2567
- @index = i1
2568
- r1 = nil
2569
- end
2570
- end
2571
- s0 << r1
2572
- if r1
2573
- if has_terminal?('[', false, index)
2574
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2575
- @index += 1
2576
- else
2577
- terminal_parse_failure('[')
2578
- r4 = nil
2579
- end
2580
- s0 << r4
2581
- if r4
2582
- i5 = index
2583
- r6 = _nt_string
2584
- if r6
2585
- r5 = r6
2586
- else
2587
- r7 = _nt_variable
2588
- if r7
2589
- r5 = r7
2590
- else
2591
- @index = i5
2592
- r5 = nil
2593
- end
2594
- end
2595
- s0 << r5
2596
- if r5
2597
- if has_terminal?(']', false, index)
2598
- r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
2599
- @index += 1
2600
- else
2601
- terminal_parse_failure(']')
2602
- r8 = nil
2603
- end
2604
- s0 << r8
2605
- end
2606
- end
2607
- end
2608
- if s0.last
2609
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2610
- r0.extend(Accessor0)
2611
- r0.extend(Accessor1)
2612
- else
2613
- @index = i0
2614
- r0 = nil
2615
- end
2616
-
2617
- node_cache[:accessor][start_index] = r0
2618
-
2619
- r0
2620
- end
2621
-
2622
- module Operator0
2623
- def S
2624
- elements[0]
2625
- end
2626
-
2627
- def S
2628
- elements[2]
2629
- end
2630
- end
2631
-
2632
- module Operator1
2633
- def build
2634
- Node::Operator.new(text_value.strip)
2635
- end
2636
- end
2637
-
2638
- module Operator2
2639
- def build
2640
- Node::Operator.new(text_value)
2641
- end
2642
- end
2643
-
2644
- def _nt_operator
2645
- start_index = index
2646
- if node_cache[:operator].has_key?(index)
2647
- cached = node_cache[:operator][index]
2648
- @index = cached.interval.end if cached
2649
- return cached
2650
- end
2651
-
2652
- i0 = index
2653
- i1, s1 = index, []
2654
- r2 = _nt_S
2655
- s1 << r2
2656
- if r2
2657
- if has_terminal?('\G[-+*/]', true, index)
2658
- r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
2659
- @index += 1
2660
- else
2661
- r3 = nil
2662
- end
2663
- s1 << r3
2664
- if r3
2665
- r4 = _nt_S
2666
- s1 << r4
2667
- end
2668
- end
2669
- if s1.last
2670
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2671
- r1.extend(Operator0)
2672
- r1.extend(Operator1)
2673
- else
2674
- @index = i1
2675
- r1 = nil
2676
- end
2677
- if r1
2678
- r0 = r1
2679
- else
2680
- if has_terminal?('\G[-+*/]', true, index)
2681
- r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
2682
- r5.extend(Operator2)
2683
- @index += 1
2684
- else
2685
- r5 = nil
2686
- end
2687
- if r5
2688
- r0 = r5
2689
- else
2690
- @index = i0
2691
- r0 = nil
2692
- end
2693
- end
2694
-
2695
- node_cache[:operator][start_index] = r0
2696
-
2697
- r0
2698
- end
2699
-
2700
- module Literal0
2701
- def dimension
2702
- elements[2]
2703
- end
2704
- end
2705
-
2706
- module Literal1
2707
- def build
2708
- Node::Anonymous.new(text_value)
2709
- end
2710
- end
2711
-
2712
- module Literal2
2713
- def number
2714
- elements[0]
2715
- end
2716
-
2717
- def unit
2718
- elements[1]
2719
- end
2720
- end
2721
-
2722
- module Literal3
2723
- def build
2724
- Node::Number.new(number.text_value, unit.text_value)
2725
- end
2726
- end
2727
-
2728
- module Literal4
2729
- def build
2730
- Node::String.new(text_value)
2731
- end
2732
- end
2733
-
2734
- def _nt_literal
2735
- start_index = index
2736
- if node_cache[:literal].has_key?(index)
2737
- cached = node_cache[:literal][index]
2738
- @index = cached.interval.end if cached
2739
- return cached
2740
- end
2741
-
2742
- i0 = index
2743
- r1 = _nt_color
2744
- if r1
2745
- r0 = r1
2746
- else
2747
- i2, s2 = index, []
2748
- i3 = index
2749
- r4 = _nt_dimension
2750
- if r4
2751
- r3 = r4
2752
- else
2753
- s5, i5 = [], index
2754
- loop do
2755
- if has_terminal?('\G[-a-z]', true, index)
2756
- r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
2757
- @index += 1
2758
- else
2759
- r6 = nil
2760
- end
2761
- if r6
2762
- s5 << r6
2763
- else
2764
- break
2765
- end
2766
- end
2767
- if s5.empty?
2768
- @index = i5
2769
- r5 = nil
2770
- else
2771
- r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
2772
- end
2773
- if r5
2774
- r3 = r5
2775
- else
2776
- @index = i3
2777
- r3 = nil
2778
- end
2779
- end
2780
- s2 << r3
2781
- if r3
2782
- if has_terminal?('/', false, index)
2783
- r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
2784
- @index += 1
2785
- else
2786
- terminal_parse_failure('/')
2787
- r7 = nil
2788
- end
2789
- s2 << r7
2790
- if r7
2791
- r8 = _nt_dimension
2792
- s2 << r8
2793
- end
2794
- end
2795
- if s2.last
2796
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
2797
- r2.extend(Literal0)
2798
- r2.extend(Literal1)
2799
- else
2800
- @index = i2
2801
- r2 = nil
2802
- end
2803
- if r2
2804
- r0 = r2
2805
- else
2806
- i9, s9 = index, []
2807
- r10 = _nt_number
2808
- s9 << r10
2809
- if r10
2810
- r11 = _nt_unit
2811
- s9 << r11
2812
- end
2813
- if s9.last
2814
- r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
2815
- r9.extend(Literal2)
2816
- r9.extend(Literal3)
2817
- else
2818
- @index = i9
2819
- r9 = nil
2820
- end
2821
- if r9
2822
- r0 = r9
2823
- else
2824
- r12 = _nt_string
2825
- r12.extend(Literal4)
2826
- if r12
2827
- r0 = r12
2828
- else
2829
- @index = i0
2830
- r0 = nil
2831
- end
2832
- end
2833
- end
2834
- end
2835
-
2836
- node_cache[:literal][start_index] = r0
2837
-
2838
- r0
2839
- end
2840
-
2841
- module Important0
2842
- def build
2843
- Node::Keyword.new(text_value)
2844
- end
2845
- end
2846
-
2847
- def _nt_important
2848
- start_index = index
2849
- if node_cache[:important].has_key?(index)
2850
- cached = node_cache[:important][index]
2851
- @index = cached.interval.end if cached
2852
- return cached
2853
- end
2854
-
2855
- if has_terminal?('!important', false, index)
2856
- r0 = instantiate_node(SyntaxNode,input, index...(index + 10))
2857
- r0.extend(Important0)
2858
- @index += 10
2859
- else
2860
- terminal_parse_failure('!important')
2861
- r0 = nil
2862
- end
2863
-
2864
- node_cache[:important][start_index] = r0
2865
-
2866
- r0
2867
- end
2868
-
2869
- module Keyword0
2870
- end
2871
-
2872
- module Keyword1
2873
- def build
2874
- Node::Keyword.new(text_value)
2875
- end
2876
- end
2877
-
2878
- def _nt_keyword
2879
- start_index = index
2880
- if node_cache[:keyword].has_key?(index)
2881
- cached = node_cache[:keyword][index]
2882
- @index = cached.interval.end if cached
2883
- return cached
2884
- end
2885
-
2886
- i0, s0 = index, []
2887
- s1, i1 = [], index
2888
- loop do
2889
- if has_terminal?('\G[-a-zA-Z]', true, index)
2890
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
2891
- @index += 1
2892
- else
2893
- r2 = nil
2894
- end
2895
- if r2
2896
- s1 << r2
2897
- else
2898
- break
2899
- end
2900
- end
2901
- if s1.empty?
2902
- @index = i1
2903
- r1 = nil
2904
- else
2905
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2906
- end
2907
- s0 << r1
2908
- if r1
2909
- i3 = index
2910
- r4 = _nt_ns
2911
- if r4
2912
- r3 = nil
2913
- else
2914
- @index = i3
2915
- r3 = instantiate_node(SyntaxNode,input, index...index)
2916
- end
2917
- s0 << r3
2918
- end
2919
- if s0.last
2920
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2921
- r0.extend(Keyword0)
2922
- r0.extend(Keyword1)
2923
- else
2924
- @index = i0
2925
- r0 = nil
2926
- end
2927
-
2928
- node_cache[:keyword][start_index] = r0
2929
-
2930
- r0
2931
- end
2932
-
2933
- module String0
2934
- end
2935
-
2936
- module String1
2937
- def content
2938
- elements[1]
2939
- end
2940
-
2941
- end
2942
-
2943
- module String2
2944
- def value
2945
- content.text_value
2946
- end
2947
- end
2948
-
2949
- module String3
2950
- end
2951
-
2952
- module String4
2953
- def content
2954
- elements[1]
2955
- end
2956
-
2957
- end
2958
-
2959
- module String5
2960
- def value
2961
- content.text_value
2962
- end
2963
- end
2964
-
2965
- def _nt_string
2966
- start_index = index
2967
- if node_cache[:string].has_key?(index)
2968
- cached = node_cache[:string][index]
2969
- @index = cached.interval.end if cached
2970
- return cached
2971
- end
2972
-
2973
- i0 = index
2974
- i1, s1 = index, []
2975
- if has_terminal?("'", false, index)
2976
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
2977
- @index += 1
2978
- else
2979
- terminal_parse_failure("'")
2980
- r2 = nil
2981
- end
2982
- s1 << r2
2983
- if r2
2984
- s3, i3 = [], index
2985
- loop do
2986
- i4, s4 = index, []
2987
- i5 = index
2988
- if has_terminal?("'", false, index)
2989
- r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
2990
- @index += 1
2991
- else
2992
- terminal_parse_failure("'")
2993
- r6 = nil
2994
- end
2995
- if r6
2996
- r5 = nil
2997
- else
2998
- @index = i5
2999
- r5 = instantiate_node(SyntaxNode,input, index...index)
3000
- end
3001
- s4 << r5
3002
- if r5
3003
- if index < input_length
3004
- r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
3005
- @index += 1
3006
- else
3007
- terminal_parse_failure("any character")
3008
- r7 = nil
3009
- end
3010
- s4 << r7
3011
- end
3012
- if s4.last
3013
- r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
3014
- r4.extend(String0)
3015
- else
3016
- @index = i4
3017
- r4 = nil
3018
- end
3019
- if r4
3020
- s3 << r4
3021
- else
3022
- break
3023
- end
3024
- end
3025
- r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
3026
- s1 << r3
3027
- if r3
3028
- if has_terminal?("'", false, index)
3029
- r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
3030
- @index += 1
3031
- else
3032
- terminal_parse_failure("'")
3033
- r8 = nil
3034
- end
3035
- s1 << r8
3036
- end
3037
- end
3038
- if s1.last
3039
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3040
- r1.extend(String1)
3041
- r1.extend(String2)
3042
- else
3043
- @index = i1
3044
- r1 = nil
3045
- end
3046
- if r1
3047
- r0 = r1
3048
- else
3049
- i9, s9 = index, []
3050
- if has_terminal?('\G["]', true, index)
3051
- r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
3052
- @index += 1
3053
- else
3054
- r10 = nil
3055
- end
3056
- s9 << r10
3057
- if r10
3058
- s11, i11 = [], index
3059
- loop do
3060
- i12, s12 = index, []
3061
- i13 = index
3062
- if has_terminal?('\G["]', true, index)
3063
- r14 = instantiate_node(SyntaxNode,input, index...(index + 1))
3064
- @index += 1
3065
- else
3066
- r14 = nil
3067
- end
3068
- if r14
3069
- r13 = nil
3070
- else
3071
- @index = i13
3072
- r13 = instantiate_node(SyntaxNode,input, index...index)
3073
- end
3074
- s12 << r13
3075
- if r13
3076
- if index < input_length
3077
- r15 = instantiate_node(SyntaxNode,input, index...(index + 1))
3078
- @index += 1
3079
- else
3080
- terminal_parse_failure("any character")
3081
- r15 = nil
3082
- end
3083
- s12 << r15
3084
- end
3085
- if s12.last
3086
- r12 = instantiate_node(SyntaxNode,input, i12...index, s12)
3087
- r12.extend(String3)
3088
- else
3089
- @index = i12
3090
- r12 = nil
3091
- end
3092
- if r12
3093
- s11 << r12
3094
- else
3095
- break
3096
- end
3097
- end
3098
- r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
3099
- s9 << r11
3100
- if r11
3101
- if has_terminal?('\G["]', true, index)
3102
- r16 = instantiate_node(SyntaxNode,input, index...(index + 1))
3103
- @index += 1
3104
- else
3105
- r16 = nil
3106
- end
3107
- s9 << r16
3108
- end
3109
- end
3110
- if s9.last
3111
- r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
3112
- r9.extend(String4)
3113
- r9.extend(String5)
3114
- else
3115
- @index = i9
3116
- r9 = nil
3117
- end
3118
- if r9
3119
- r0 = r9
3120
- else
3121
- @index = i0
3122
- r0 = nil
3123
- end
3124
- end
3125
-
3126
- node_cache[:string][start_index] = r0
3127
-
3128
- r0
3129
- end
3130
-
3131
- module Dimension0
3132
- def number
3133
- elements[0]
3134
- end
3135
-
3136
- def unit
3137
- elements[1]
3138
- end
3139
- end
3140
-
3141
- def _nt_dimension
3142
- start_index = index
3143
- if node_cache[:dimension].has_key?(index)
3144
- cached = node_cache[:dimension][index]
3145
- @index = cached.interval.end if cached
3146
- return cached
3147
- end
3148
-
3149
- i0, s0 = index, []
3150
- r1 = _nt_number
3151
- s0 << r1
3152
- if r1
3153
- r2 = _nt_unit
3154
- s0 << r2
3155
- end
3156
- if s0.last
3157
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3158
- r0.extend(Dimension0)
3159
- else
3160
- @index = i0
3161
- r0 = nil
3162
- end
3163
-
3164
- node_cache[:dimension][start_index] = r0
3165
-
3166
- r0
3167
- end
3168
-
3169
- module Number0
3170
- end
3171
-
3172
- module Number1
3173
- end
3174
-
3175
- def _nt_number
3176
- start_index = index
3177
- if node_cache[:number].has_key?(index)
3178
- cached = node_cache[:number][index]
3179
- @index = cached.interval.end if cached
3180
- return cached
3181
- end
3182
-
3183
- i0 = index
3184
- i1, s1 = index, []
3185
- if has_terminal?('-', false, index)
3186
- r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
3187
- @index += 1
3188
- else
3189
- terminal_parse_failure('-')
3190
- r3 = nil
3191
- end
3192
- if r3
3193
- r2 = r3
3194
- else
3195
- r2 = instantiate_node(SyntaxNode,input, index...index)
3196
- end
3197
- s1 << r2
3198
- if r2
3199
- s4, i4 = [], index
3200
- loop do
3201
- if has_terminal?('\G[0-9]', true, index)
3202
- r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
3203
- @index += 1
3204
- else
3205
- r5 = nil
3206
- end
3207
- if r5
3208
- s4 << r5
3209
- else
3210
- break
3211
- end
3212
- end
3213
- r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
3214
- s1 << r4
3215
- if r4
3216
- if has_terminal?('.', false, index)
3217
- r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
3218
- @index += 1
3219
- else
3220
- terminal_parse_failure('.')
3221
- r6 = nil
3222
- end
3223
- s1 << r6
3224
- if r6
3225
- s7, i7 = [], index
3226
- loop do
3227
- if has_terminal?('\G[0-9]', true, index)
3228
- r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
3229
- @index += 1
3230
- else
3231
- r8 = nil
3232
- end
3233
- if r8
3234
- s7 << r8
3235
- else
3236
- break
3237
- end
3238
- end
3239
- if s7.empty?
3240
- @index = i7
3241
- r7 = nil
3242
- else
3243
- r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
3244
- end
3245
- s1 << r7
3246
- end
3247
- end
3248
- end
3249
- if s1.last
3250
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3251
- r1.extend(Number0)
3252
- else
3253
- @index = i1
3254
- r1 = nil
3255
- end
3256
- if r1
3257
- r0 = r1
3258
- else
3259
- i9, s9 = index, []
3260
- if has_terminal?('-', false, index)
3261
- r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
3262
- @index += 1
3263
- else
3264
- terminal_parse_failure('-')
3265
- r11 = nil
3266
- end
3267
- if r11
3268
- r10 = r11
3269
- else
3270
- r10 = instantiate_node(SyntaxNode,input, index...index)
3271
- end
3272
- s9 << r10
3273
- if r10
3274
- s12, i12 = [], index
3275
- loop do
3276
- if has_terminal?('\G[0-9]', true, index)
3277
- r13 = instantiate_node(SyntaxNode,input, index...(index + 1))
3278
- @index += 1
3279
- else
3280
- r13 = nil
3281
- end
3282
- if r13
3283
- s12 << r13
3284
- else
3285
- break
3286
- end
3287
- end
3288
- if s12.empty?
3289
- @index = i12
3290
- r12 = nil
3291
- else
3292
- r12 = instantiate_node(SyntaxNode,input, i12...index, s12)
3293
- end
3294
- s9 << r12
3295
- end
3296
- if s9.last
3297
- r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
3298
- r9.extend(Number1)
3299
- else
3300
- @index = i9
3301
- r9 = nil
3302
- end
3303
- if r9
3304
- r0 = r9
3305
- else
3306
- @index = i0
3307
- r0 = nil
3308
- end
3309
- end
3310
-
3311
- node_cache[:number][start_index] = r0
3312
-
3313
- r0
3314
- end
3315
-
3316
- def _nt_unit
3317
- start_index = index
3318
- if node_cache[:unit].has_key?(index)
3319
- cached = node_cache[:unit][index]
3320
- @index = cached.interval.end if cached
3321
- return cached
3322
- end
3323
-
3324
- i1 = index
3325
- if has_terminal?('px', false, index)
3326
- r2 = instantiate_node(SyntaxNode,input, index...(index + 2))
3327
- @index += 2
3328
- else
3329
- terminal_parse_failure('px')
3330
- r2 = nil
3331
- end
3332
- if r2
3333
- r1 = r2
3334
- else
3335
- if has_terminal?('em', false, index)
3336
- r3 = instantiate_node(SyntaxNode,input, index...(index + 2))
3337
- @index += 2
3338
- else
3339
- terminal_parse_failure('em')
3340
- r3 = nil
3341
- end
3342
- if r3
3343
- r1 = r3
3344
- else
3345
- if has_terminal?('pc', false, index)
3346
- r4 = instantiate_node(SyntaxNode,input, index...(index + 2))
3347
- @index += 2
3348
- else
3349
- terminal_parse_failure('pc')
3350
- r4 = nil
3351
- end
3352
- if r4
3353
- r1 = r4
3354
- else
3355
- if has_terminal?('%', false, index)
3356
- r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
3357
- @index += 1
3358
- else
3359
- terminal_parse_failure('%')
3360
- r5 = nil
3361
- end
3362
- if r5
3363
- r1 = r5
3364
- else
3365
- if has_terminal?('pt', false, index)
3366
- r6 = instantiate_node(SyntaxNode,input, index...(index + 2))
3367
- @index += 2
3368
- else
3369
- terminal_parse_failure('pt')
3370
- r6 = nil
3371
- end
3372
- if r6
3373
- r1 = r6
3374
- else
3375
- if has_terminal?('cm', false, index)
3376
- r7 = instantiate_node(SyntaxNode,input, index...(index + 2))
3377
- @index += 2
3378
- else
3379
- terminal_parse_failure('cm')
3380
- r7 = nil
3381
- end
3382
- if r7
3383
- r1 = r7
3384
- else
3385
- if has_terminal?('mm', false, index)
3386
- r8 = instantiate_node(SyntaxNode,input, index...(index + 2))
3387
- @index += 2
3388
- else
3389
- terminal_parse_failure('mm')
3390
- r8 = nil
3391
- end
3392
- if r8
3393
- r1 = r8
3394
- else
3395
- @index = i1
3396
- r1 = nil
3397
- end
3398
- end
3399
- end
3400
- end
3401
- end
3402
- end
3403
- end
3404
- if r1
3405
- r0 = r1
3406
- else
3407
- r0 = instantiate_node(SyntaxNode,input, index...index)
3408
- end
3409
-
3410
- node_cache[:unit][start_index] = r0
3411
-
3412
- r0
3413
- end
3414
-
3415
- module Color0
3416
- def rgb
3417
- elements[1]
3418
- end
3419
- end
3420
-
3421
- module Color1
3422
- def build
3423
- Node::Color.new(*rgb.build)
3424
- end
3425
- end
3426
-
3427
- module Color2
3428
- end
3429
-
3430
- module Color3
3431
- def fn
3432
- elements[0]
3433
- end
3434
-
3435
- def arguments
3436
- elements[1]
3437
- end
3438
- end
3439
-
3440
- module Color4
3441
- def build
3442
- Node::Function.new(fn.text_value, arguments.build.flatten)
3443
- end
3444
- end
3445
-
3446
- def _nt_color
3447
- start_index = index
3448
- if node_cache[:color].has_key?(index)
3449
- cached = node_cache[:color][index]
3450
- @index = cached.interval.end if cached
3451
- return cached
3452
- end
3453
-
3454
- i0 = index
3455
- i1, s1 = index, []
3456
- if has_terminal?('#', false, index)
3457
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
3458
- @index += 1
3459
- else
3460
- terminal_parse_failure('#')
3461
- r2 = nil
3462
- end
3463
- s1 << r2
3464
- if r2
3465
- r3 = _nt_rgb
3466
- s1 << r3
3467
- end
3468
- if s1.last
3469
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3470
- r1.extend(Color0)
3471
- r1.extend(Color1)
3472
- else
3473
- @index = i1
3474
- r1 = nil
3475
- end
3476
- if r1
3477
- r0 = r1
3478
- else
3479
- i4, s4 = index, []
3480
- i5, s5 = index, []
3481
- i6 = index
3482
- if has_terminal?('hsl', false, index)
3483
- r7 = instantiate_node(SyntaxNode,input, index...(index + 3))
3484
- @index += 3
3485
- else
3486
- terminal_parse_failure('hsl')
3487
- r7 = nil
3488
- end
3489
- if r7
3490
- r6 = r7
3491
- else
3492
- if has_terminal?('rgb', false, index)
3493
- r8 = instantiate_node(SyntaxNode,input, index...(index + 3))
3494
- @index += 3
3495
- else
3496
- terminal_parse_failure('rgb')
3497
- r8 = nil
3498
- end
3499
- if r8
3500
- r6 = r8
3501
- else
3502
- @index = i6
3503
- r6 = nil
3504
- end
3505
- end
3506
- s5 << r6
3507
- if r6
3508
- if has_terminal?('a', false, index)
3509
- r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
3510
- @index += 1
3511
- else
3512
- terminal_parse_failure('a')
3513
- r10 = nil
3514
- end
3515
- if r10
3516
- r9 = r10
3517
- else
3518
- r9 = instantiate_node(SyntaxNode,input, index...index)
3519
- end
3520
- s5 << r9
3521
- end
3522
- if s5.last
3523
- r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
3524
- r5.extend(Color2)
3525
- else
3526
- @index = i5
3527
- r5 = nil
3528
- end
3529
- s4 << r5
3530
- if r5
3531
- r11 = _nt_arguments
3532
- s4 << r11
3533
- end
3534
- if s4.last
3535
- r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
3536
- r4.extend(Color3)
3537
- r4.extend(Color4)
3538
- else
3539
- @index = i4
3540
- r4 = nil
3541
- end
3542
- if r4
3543
- r0 = r4
3544
- else
3545
- @index = i0
3546
- r0 = nil
3547
- end
3548
- end
3549
-
3550
- node_cache[:color][start_index] = r0
3551
-
3552
- r0
3553
- end
3554
-
3555
- module Rgb0
3556
- def hex
3557
- elements[0]
3558
- end
3559
-
3560
- def hex
3561
- elements[1]
3562
- end
3563
- end
3564
-
3565
- module Rgb1
3566
- def hex
3567
- elements[0]
3568
- end
3569
-
3570
- def hex
3571
- elements[1]
3572
- end
3573
- end
3574
-
3575
- module Rgb2
3576
- def hex
3577
- elements[0]
3578
- end
3579
-
3580
- def hex
3581
- elements[1]
3582
- end
3583
- end
3584
-
3585
- module Rgb3
3586
- def r
3587
- elements[0]
3588
- end
3589
-
3590
- def g
3591
- elements[1]
3592
- end
3593
-
3594
- def b
3595
- elements[2]
3596
- end
3597
- end
3598
-
3599
- module Rgb4
3600
- def build
3601
- [r.text_value, g.text_value, b.text_value]
3602
- end
3603
- end
3604
-
3605
- module Rgb5
3606
- def r
3607
- elements[0]
3608
- end
3609
-
3610
- def g
3611
- elements[1]
3612
- end
3613
-
3614
- def b
3615
- elements[2]
3616
- end
3617
- end
3618
-
3619
- module Rgb6
3620
- def build
3621
- [r.text_value, g.text_value, b.text_value].map {|c| c * 2 }
3622
- end
3623
- end
3624
-
3625
- def _nt_rgb
3626
- start_index = index
3627
- if node_cache[:rgb].has_key?(index)
3628
- cached = node_cache[:rgb][index]
3629
- @index = cached.interval.end if cached
3630
- return cached
3631
- end
3632
-
3633
- i0 = index
3634
- i1, s1 = index, []
3635
- i2, s2 = index, []
3636
- r3 = _nt_hex
3637
- s2 << r3
3638
- if r3
3639
- r4 = _nt_hex
3640
- s2 << r4
3641
- end
3642
- if s2.last
3643
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3644
- r2.extend(Rgb0)
3645
- else
3646
- @index = i2
3647
- r2 = nil
3648
- end
3649
- s1 << r2
3650
- if r2
3651
- i5, s5 = index, []
3652
- r6 = _nt_hex
3653
- s5 << r6
3654
- if r6
3655
- r7 = _nt_hex
3656
- s5 << r7
3657
- end
3658
- if s5.last
3659
- r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
3660
- r5.extend(Rgb1)
3661
- else
3662
- @index = i5
3663
- r5 = nil
3664
- end
3665
- s1 << r5
3666
- if r5
3667
- i8, s8 = index, []
3668
- r9 = _nt_hex
3669
- s8 << r9
3670
- if r9
3671
- r10 = _nt_hex
3672
- s8 << r10
3673
- end
3674
- if s8.last
3675
- r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
3676
- r8.extend(Rgb2)
3677
- else
3678
- @index = i8
3679
- r8 = nil
3680
- end
3681
- s1 << r8
3682
- end
3683
- end
3684
- if s1.last
3685
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3686
- r1.extend(Rgb3)
3687
- r1.extend(Rgb4)
3688
- else
3689
- @index = i1
3690
- r1 = nil
3691
- end
3692
- if r1
3693
- r0 = r1
3694
- else
3695
- i11, s11 = index, []
3696
- r12 = _nt_hex
3697
- s11 << r12
3698
- if r12
3699
- r13 = _nt_hex
3700
- s11 << r13
3701
- if r13
3702
- r14 = _nt_hex
3703
- s11 << r14
3704
- end
3705
- end
3706
- if s11.last
3707
- r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
3708
- r11.extend(Rgb5)
3709
- r11.extend(Rgb6)
3710
- else
3711
- @index = i11
3712
- r11 = nil
3713
- end
3714
- if r11
3715
- r0 = r11
3716
- else
3717
- @index = i0
3718
- r0 = nil
3719
- end
3720
- end
3721
-
3722
- node_cache[:rgb][start_index] = r0
3723
-
3724
- r0
3725
- end
3726
-
3727
- def _nt_hex
3728
- start_index = index
3729
- if node_cache[:hex].has_key?(index)
3730
- cached = node_cache[:hex][index]
3731
- @index = cached.interval.end if cached
3732
- return cached
3733
- end
3734
-
3735
- if has_terminal?('\G[a-fA-F0-9]', true, index)
3736
- r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
3737
- @index += 1
3738
- else
3739
- r0 = nil
3740
- end
3741
-
3742
- node_cache[:hex][start_index] = r0
3743
-
3744
- r0
3745
- end
3746
-
3747
- module Function0
3748
- def name
3749
- elements[0]
3750
- end
3751
-
3752
- def arguments
3753
- elements[1]
3754
- end
3755
- end
3756
-
3757
- module Function1
3758
- def build
3759
- Node::Function.new(name.text_value, [arguments.build].flatten)
3760
- end
3761
- end
3762
-
3763
- def _nt_function
3764
- start_index = index
3765
- if node_cache[:function].has_key?(index)
3766
- cached = node_cache[:function][index]
3767
- @index = cached.interval.end if cached
3768
- return cached
3769
- end
3770
-
3771
- i0, s0 = index, []
3772
- s1, i1 = [], index
3773
- loop do
3774
- if has_terminal?('\G[-a-zA-Z_]', true, index)
3775
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
3776
- @index += 1
3777
- else
3778
- r2 = nil
3779
- end
3780
- if r2
3781
- s1 << r2
3782
- else
3783
- break
3784
- end
3785
- end
3786
- if s1.empty?
3787
- @index = i1
3788
- r1 = nil
3789
- else
3790
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3791
- end
3792
- s0 << r1
3793
- if r1
3794
- r3 = _nt_arguments
3795
- s0 << r3
3796
- end
3797
- if s0.last
3798
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3799
- r0.extend(Function0)
3800
- r0.extend(Function1)
3801
- else
3802
- @index = i0
3803
- r0 = nil
3804
- end
3805
-
3806
- node_cache[:function][start_index] = r0
3807
-
3808
- r0
3809
- end
3810
-
3811
- module Arguments0
3812
- def s
3813
- elements[1]
3814
- end
3815
-
3816
- def argument
3817
- elements[2]
3818
- end
3819
-
3820
- def s
3821
- elements[3]
3822
- end
3823
- end
3824
-
3825
- module Arguments1
3826
- def s
3827
- elements[1]
3828
- end
3829
-
3830
- def argument
3831
- elements[2]
3832
- end
3833
-
3834
- def s
3835
- elements[3]
3836
- end
3837
-
3838
- def tail
3839
- elements[4]
3840
- end
3841
-
3842
- end
3843
-
3844
- module Arguments2
3845
- def build
3846
- all.map do |e|
3847
- e.build if e.respond_to? :build
3848
- end.compact
3849
- end
3850
-
3851
- def all
3852
- [argument] + tail.elements.map {|e| e.argument }
3853
- end
3854
- end
3855
-
3856
- def _nt_arguments
3857
- start_index = index
3858
- if node_cache[:arguments].has_key?(index)
3859
- cached = node_cache[:arguments][index]
3860
- @index = cached.interval.end if cached
3861
- return cached
3862
- end
3863
-
3864
- i0, s0 = index, []
3865
- if has_terminal?('(', false, index)
3866
- r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
3867
- @index += 1
3868
- else
3869
- terminal_parse_failure('(')
3870
- r1 = nil
3871
- end
3872
- s0 << r1
3873
- if r1
3874
- r2 = _nt_s
3875
- s0 << r2
3876
- if r2
3877
- r3 = _nt_argument
3878
- s0 << r3
3879
- if r3
3880
- r4 = _nt_s
3881
- s0 << r4
3882
- if r4
3883
- s5, i5 = [], index
3884
- loop do
3885
- i6, s6 = index, []
3886
- if has_terminal?(',', false, index)
3887
- r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
3888
- @index += 1
3889
- else
3890
- terminal_parse_failure(',')
3891
- r7 = nil
3892
- end
3893
- s6 << r7
3894
- if r7
3895
- r8 = _nt_s
3896
- s6 << r8
3897
- if r8
3898
- r9 = _nt_argument
3899
- s6 << r9
3900
- if r9
3901
- r10 = _nt_s
3902
- s6 << r10
3903
- end
3904
- end
3905
- end
3906
- if s6.last
3907
- r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
3908
- r6.extend(Arguments0)
3909
- else
3910
- @index = i6
3911
- r6 = nil
3912
- end
3913
- if r6
3914
- s5 << r6
3915
- else
3916
- break
3917
- end
3918
- end
3919
- r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
3920
- s0 << r5
3921
- if r5
3922
- if has_terminal?(')', false, index)
3923
- r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
3924
- @index += 1
3925
- else
3926
- terminal_parse_failure(')')
3927
- r11 = nil
3928
- end
3929
- s0 << r11
3930
- end
3931
- end
3932
- end
3933
- end
3934
- end
3935
- if s0.last
3936
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3937
- r0.extend(Arguments1)
3938
- r0.extend(Arguments2)
3939
- else
3940
- @index = i0
3941
- r0 = nil
3942
- end
3943
-
3944
- node_cache[:arguments][start_index] = r0
3945
-
3946
- r0
3947
- end
3948
-
3949
- module Argument0
3950
- def build
3951
- Node::Color.new text_value
3952
- end
3953
- end
3954
-
3955
- module Argument1
3956
- def number
3957
- elements[0]
3958
- end
3959
-
3960
- def unit
3961
- elements[1]
3962
- end
3963
- end
3964
-
3965
- module Argument2
3966
- def build
3967
- Node::Number.new number.text_value, unit.text_value
3968
- end
3969
- end
3970
-
3971
- module Argument3
3972
- def build
3973
- Node::String.new text_value
3974
- end
3975
- end
3976
-
3977
- module Argument4
3978
- def dimension
3979
- elements[2]
3980
- end
3981
- end
3982
-
3983
- module Argument5
3984
- def build
3985
- Node::Anonymous.new text_value
3986
- end
3987
- end
3988
-
3989
- module Argument6
3990
- def build
3991
- Node::String.new text_value
3992
- end
3993
- end
3994
-
3995
- def _nt_argument
3996
- start_index = index
3997
- if node_cache[:argument].has_key?(index)
3998
- cached = node_cache[:argument][index]
3999
- @index = cached.interval.end if cached
4000
- return cached
4001
- end
4002
-
4003
- i0 = index
4004
- r1 = _nt_color
4005
- r1.extend(Argument0)
4006
- if r1
4007
- r0 = r1
4008
- else
4009
- i2, s2 = index, []
4010
- r3 = _nt_number
4011
- s2 << r3
4012
- if r3
4013
- r4 = _nt_unit
4014
- s2 << r4
4015
- end
4016
- if s2.last
4017
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
4018
- r2.extend(Argument1)
4019
- r2.extend(Argument2)
4020
- else
4021
- @index = i2
4022
- r2 = nil
4023
- end
4024
- if r2
4025
- r0 = r2
4026
- else
4027
- r5 = _nt_string
4028
- r5.extend(Argument3)
4029
- if r5
4030
- r0 = r5
4031
- else
4032
- i6, s6 = index, []
4033
- s7, i7 = [], index
4034
- loop do
4035
- if has_terminal?('\G[a-zA-Z]', true, index)
4036
- r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
4037
- @index += 1
4038
- else
4039
- r8 = nil
4040
- end
4041
- if r8
4042
- s7 << r8
4043
- else
4044
- break
4045
- end
4046
- end
4047
- if s7.empty?
4048
- @index = i7
4049
- r7 = nil
4050
- else
4051
- r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
4052
- end
4053
- s6 << r7
4054
- if r7
4055
- if has_terminal?('=', false, index)
4056
- r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
4057
- @index += 1
4058
- else
4059
- terminal_parse_failure('=')
4060
- r9 = nil
4061
- end
4062
- s6 << r9
4063
- if r9
4064
- r10 = _nt_dimension
4065
- s6 << r10
4066
- end
4067
- end
4068
- if s6.last
4069
- r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
4070
- r6.extend(Argument4)
4071
- r6.extend(Argument5)
4072
- else
4073
- @index = i6
4074
- r6 = nil
4075
- end
4076
- if r6
4077
- r0 = r6
4078
- else
4079
- s11, i11 = [], index
4080
- loop do
4081
- if has_terminal?('\G[-a-zA-Z0-9_%$/.&=:;#+?]', true, index)
4082
- r12 = instantiate_node(SyntaxNode,input, index...(index + 1))
4083
- @index += 1
4084
- else
4085
- r12 = nil
4086
- end
4087
- if r12
4088
- s11 << r12
4089
- else
4090
- break
4091
- end
4092
- end
4093
- if s11.empty?
4094
- @index = i11
4095
- r11 = nil
4096
- else
4097
- r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
4098
- r11.extend(Argument6)
4099
- end
4100
- if r11
4101
- r0 = r11
4102
- else
4103
- @index = i0
4104
- r0 = nil
4105
- end
4106
- end
4107
- end
4108
- end
4109
- end
4110
-
4111
- node_cache[:argument][start_index] = r0
4112
-
4113
- r0
4114
- end
4115
-
4116
- def _nt_s
4117
- start_index = index
4118
- if node_cache[:s].has_key?(index)
4119
- cached = node_cache[:s][index]
4120
- @index = cached.interval.end if cached
4121
- return cached
4122
- end
4123
-
4124
- s0, i0 = [], index
4125
- loop do
4126
- if has_terminal?('\G[ ]', true, index)
4127
- r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
4128
- @index += 1
4129
- else
4130
- r1 = nil
4131
- end
4132
- if r1
4133
- s0 << r1
4134
- else
4135
- break
4136
- end
4137
- end
4138
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4139
-
4140
- node_cache[:s][start_index] = r0
4141
-
4142
- r0
4143
- end
4144
-
4145
- def _nt_S
4146
- start_index = index
4147
- if node_cache[:S].has_key?(index)
4148
- cached = node_cache[:S][index]
4149
- @index = cached.interval.end if cached
4150
- return cached
4151
- end
4152
-
4153
- s0, i0 = [], index
4154
- loop do
4155
- if has_terminal?('\G[ ]', true, index)
4156
- r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
4157
- @index += 1
4158
- else
4159
- r1 = nil
4160
- end
4161
- if r1
4162
- s0 << r1
4163
- else
4164
- break
4165
- end
4166
- end
4167
- if s0.empty?
4168
- @index = i0
4169
- r0 = nil
4170
- else
4171
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4172
- end
4173
-
4174
- node_cache[:S][start_index] = r0
4175
-
4176
- r0
4177
- end
4178
-
4179
- def _nt_ws
4180
- start_index = index
4181
- if node_cache[:ws].has_key?(index)
4182
- cached = node_cache[:ws][index]
4183
- @index = cached.interval.end if cached
4184
- return cached
4185
- end
4186
-
4187
- s0, i0 = [], index
4188
- loop do
4189
- if has_terminal?('\G[\\n ]', true, index)
4190
- r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
4191
- @index += 1
4192
- else
4193
- r1 = nil
4194
- end
4195
- if r1
4196
- s0 << r1
4197
- else
4198
- break
4199
- end
4200
- end
4201
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4202
-
4203
- node_cache[:ws][start_index] = r0
4204
-
4205
- r0
4206
- end
4207
-
4208
- def _nt_WS
4209
- start_index = index
4210
- if node_cache[:WS].has_key?(index)
4211
- cached = node_cache[:WS][index]
4212
- @index = cached.interval.end if cached
4213
- return cached
4214
- end
4215
-
4216
- s0, i0 = [], index
4217
- loop do
4218
- if has_terminal?('\G[\\n ]', true, index)
4219
- r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
4220
- @index += 1
4221
- else
4222
- r1 = nil
4223
- end
4224
- if r1
4225
- s0 << r1
4226
- else
4227
- break
4228
- end
4229
- end
4230
- if s0.empty?
4231
- @index = i0
4232
- r0 = nil
4233
- else
4234
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4235
- end
4236
-
4237
- node_cache[:WS][start_index] = r0
4238
-
4239
- r0
4240
- end
4241
-
4242
- module Ns0
4243
- end
4244
-
4245
- def _nt_ns
4246
- start_index = index
4247
- if node_cache[:ns].has_key?(index)
4248
- cached = node_cache[:ns][index]
4249
- @index = cached.interval.end if cached
4250
- return cached
4251
- end
4252
-
4253
- i0, s0 = index, []
4254
- i1 = index
4255
- if has_terminal?('\G[ ;\\n]', true, index)
4256
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
4257
- @index += 1
4258
- else
4259
- r2 = nil
4260
- end
4261
- if r2
4262
- r1 = nil
4263
- else
4264
- @index = i1
4265
- r1 = instantiate_node(SyntaxNode,input, index...index)
4266
- end
4267
- s0 << r1
4268
- if r1
4269
- if index < input_length
4270
- r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
4271
- @index += 1
4272
- else
4273
- terminal_parse_failure("any character")
4274
- r3 = nil
4275
- end
4276
- s0 << r3
4277
- end
4278
- if s0.last
4279
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4280
- r0.extend(Ns0)
4281
- else
4282
- @index = i0
4283
- r0 = nil
4284
- end
4285
-
4286
- node_cache[:ns][start_index] = r0
4287
-
4288
- r0
4289
- end
4290
-
4291
- end
4292
-
4293
- class LessParser < Treetop::Runtime::CompiledParser
4294
- include Less
4295
- end
4296
-