less 1.0.16 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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
-