cloudhead-less 1.1.2 → 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,4365 +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
- end
1060
- # Empty rule
1061
- end
1062
-
1063
- module Declaration3
1064
- def ws
1065
- elements[0]
1066
- end
1067
-
1068
- def ident
1069
- elements[1]
1070
- end
1071
-
1072
- def s
1073
- elements[2]
1074
- end
1075
-
1076
- def s
1077
- elements[4]
1078
- end
1079
-
1080
- def ws
1081
- elements[6]
1082
- end
1083
- end
1084
-
1085
- def _nt_declaration
1086
- start_index = index
1087
- if node_cache[:declaration].has_key?(index)
1088
- cached = node_cache[:declaration][index]
1089
- @index = cached.interval.end if cached
1090
- return cached
1091
- end
1092
-
1093
- i0 = index
1094
- i1, s1 = index, []
1095
- r2 = _nt_ws
1096
- s1 << r2
1097
- if r2
1098
- i3 = index
1099
- r4 = _nt_ident
1100
- if r4
1101
- r3 = r4
1102
- else
1103
- r5 = _nt_variable
1104
- if r5
1105
- r3 = r5
1106
- else
1107
- @index = i3
1108
- r3 = nil
1109
- end
1110
- end
1111
- s1 << r3
1112
- if r3
1113
- r6 = _nt_s
1114
- s1 << r6
1115
- if r6
1116
- if has_terminal?(':', false, index)
1117
- r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
1118
- @index += 1
1119
- else
1120
- terminal_parse_failure(':')
1121
- r7 = nil
1122
- end
1123
- s1 << r7
1124
- if r7
1125
- r8 = _nt_s
1126
- s1 << r8
1127
- if r8
1128
- r9 = _nt_expressions
1129
- s1 << r9
1130
- if r9
1131
- r10 = _nt_s
1132
- s1 << r10
1133
- if r10
1134
- i11 = index
1135
- if has_terminal?(';', false, index)
1136
- r12 = instantiate_node(SyntaxNode,input, index...(index + 1))
1137
- @index += 1
1138
- else
1139
- terminal_parse_failure(';')
1140
- r12 = nil
1141
- end
1142
- if r12
1143
- r11 = r12
1144
- else
1145
- i13, s13 = index, []
1146
- r14 = _nt_ws
1147
- s13 << r14
1148
- if r14
1149
- i15 = index
1150
- if has_terminal?('}', false, index)
1151
- r16 = instantiate_node(SyntaxNode,input, index...(index + 1))
1152
- @index += 1
1153
- else
1154
- terminal_parse_failure('}')
1155
- r16 = nil
1156
- end
1157
- if r16
1158
- @index = i15
1159
- r15 = instantiate_node(SyntaxNode,input, index...index)
1160
- else
1161
- r15 = nil
1162
- end
1163
- s13 << r15
1164
- end
1165
- if s13.last
1166
- r13 = instantiate_node(SyntaxNode,input, i13...index, s13)
1167
- r13.extend(Declaration0)
1168
- else
1169
- @index = i13
1170
- r13 = nil
1171
- end
1172
- if r13
1173
- r11 = r13
1174
- else
1175
- @index = i11
1176
- r11 = nil
1177
- end
1178
- end
1179
- s1 << r11
1180
- if r11
1181
- r17 = _nt_ws
1182
- s1 << r17
1183
- end
1184
- end
1185
- end
1186
- end
1187
- end
1188
- end
1189
- end
1190
- end
1191
- if s1.last
1192
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1193
- r1.extend(Declaration1)
1194
- r1.extend(Declaration2)
1195
- else
1196
- @index = i1
1197
- r1 = nil
1198
- end
1199
- if r1
1200
- r0 = r1
1201
- else
1202
- i18, s18 = index, []
1203
- r19 = _nt_ws
1204
- s18 << r19
1205
- if r19
1206
- r20 = _nt_ident
1207
- s18 << r20
1208
- if r20
1209
- r21 = _nt_s
1210
- s18 << r21
1211
- if r21
1212
- if has_terminal?(':', false, index)
1213
- r22 = instantiate_node(SyntaxNode,input, index...(index + 1))
1214
- @index += 1
1215
- else
1216
- terminal_parse_failure(':')
1217
- r22 = nil
1218
- end
1219
- s18 << r22
1220
- if r22
1221
- r23 = _nt_s
1222
- s18 << r23
1223
- if r23
1224
- if has_terminal?(';', false, index)
1225
- r24 = instantiate_node(SyntaxNode,input, index...(index + 1))
1226
- @index += 1
1227
- else
1228
- terminal_parse_failure(';')
1229
- r24 = nil
1230
- end
1231
- s18 << r24
1232
- if r24
1233
- r25 = _nt_ws
1234
- s18 << r25
1235
- end
1236
- end
1237
- end
1238
- end
1239
- end
1240
- end
1241
- if s18.last
1242
- r18 = instantiate_node(SyntaxNode,input, i18...index, s18)
1243
- r18.extend(Declaration3)
1244
- else
1245
- @index = i18
1246
- r18 = nil
1247
- end
1248
- if r18
1249
- r0 = r18
1250
- else
1251
- @index = i0
1252
- r0 = nil
1253
- end
1254
- end
1255
-
1256
- node_cache[:declaration][start_index] = r0
1257
-
1258
- r0
1259
- end
1260
-
1261
- module Expressions0
1262
- def build env
1263
- elements.map do |e|
1264
- e.build(env) if e.respond_to? :build
1265
- end.compact
1266
- end
1267
- end
1268
-
1269
- def _nt_expressions
1270
- start_index = index
1271
- if node_cache[:expressions].has_key?(index)
1272
- cached = node_cache[:expressions][index]
1273
- @index = cached.interval.end if cached
1274
- return cached
1275
- end
1276
-
1277
- s0, i0 = [], index
1278
- loop do
1279
- r1 = _nt_expression
1280
- if r1
1281
- s0 << r1
1282
- else
1283
- break
1284
- end
1285
- end
1286
- if s0.empty?
1287
- @index = i0
1288
- r0 = nil
1289
- else
1290
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1291
- r0.extend(Expressions0)
1292
- end
1293
-
1294
- node_cache[:expressions][start_index] = r0
1295
-
1296
- r0
1297
- end
1298
-
1299
- module Expression0
1300
- def s
1301
- elements[0]
1302
- end
1303
-
1304
- def s
1305
- elements[2]
1306
- end
1307
-
1308
- def expressions
1309
- elements[3]
1310
- end
1311
-
1312
- def s
1313
- elements[4]
1314
- end
1315
-
1316
- end
1317
-
1318
- module Expression1
1319
- def build env
1320
- Node::Expression.new(['('] + expressions.build(env).flatten + [')'])
1321
- end
1322
- end
1323
-
1324
- module Expression2
1325
- def operator
1326
- elements[0]
1327
- end
1328
-
1329
- def entity
1330
- elements[1]
1331
- end
1332
- end
1333
-
1334
- module Expression3
1335
- def s
1336
- elements[0]
1337
- end
1338
-
1339
- def entity
1340
- elements[1]
1341
- end
1342
-
1343
- def tail
1344
- elements[2]
1345
- end
1346
-
1347
- def ws
1348
- elements[3]
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
- end
1406
- end
1407
- end
1408
- end
1409
- end
1410
- if s1.last
1411
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1412
- r1.extend(Expression0)
1413
- r1.extend(Expression1)
1414
- else
1415
- @index = i1
1416
- r1 = nil
1417
- end
1418
- if r1
1419
- r0 = r1
1420
- else
1421
- i8, s8 = index, []
1422
- r9 = _nt_s
1423
- s8 << r9
1424
- if r9
1425
- r10 = _nt_entity
1426
- s8 << r10
1427
- if r10
1428
- s11, i11 = [], index
1429
- loop do
1430
- i12, s12 = index, []
1431
- r13 = _nt_operator
1432
- s12 << r13
1433
- if r13
1434
- r14 = _nt_entity
1435
- s12 << r14
1436
- end
1437
- if s12.last
1438
- r12 = instantiate_node(SyntaxNode,input, i12...index, s12)
1439
- r12.extend(Expression2)
1440
- else
1441
- @index = i12
1442
- r12 = nil
1443
- end
1444
- if r12
1445
- s11 << r12
1446
- else
1447
- break
1448
- end
1449
- end
1450
- r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
1451
- s8 << r11
1452
- if r11
1453
- r15 = _nt_ws
1454
- s8 << r15
1455
- end
1456
- end
1457
- end
1458
- if s8.last
1459
- r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
1460
- r8.extend(Expression3)
1461
- r8.extend(Expression4)
1462
- else
1463
- @index = i8
1464
- r8 = nil
1465
- end
1466
- if r8
1467
- r0 = r8
1468
- else
1469
- r16 = _nt_operator
1470
- if r16
1471
- r0 = r16
1472
- else
1473
- @index = i0
1474
- r0 = nil
1475
- end
1476
- end
1477
- end
1478
-
1479
- node_cache[:expression][start_index] = r0
1480
-
1481
- r0
1482
- end
1483
-
1484
- def _nt_entity
1485
- start_index = index
1486
- if node_cache[:entity].has_key?(index)
1487
- cached = node_cache[:entity][index]
1488
- @index = cached.interval.end if cached
1489
- return cached
1490
- end
1491
-
1492
- i0 = index
1493
- r1 = _nt_function
1494
- if r1
1495
- r0 = r1
1496
- else
1497
- r2 = _nt_fonts
1498
- if r2
1499
- r0 = r2
1500
- else
1501
- r3 = _nt_keyword
1502
- if r3
1503
- r0 = r3
1504
- else
1505
- r4 = _nt_accessor
1506
- if r4
1507
- r0 = r4
1508
- else
1509
- r5 = _nt_variable
1510
- if r5
1511
- r0 = r5
1512
- else
1513
- r6 = _nt_literal
1514
- if r6
1515
- r0 = r6
1516
- else
1517
- r7 = _nt_important
1518
- if r7
1519
- r0 = r7
1520
- else
1521
- @index = i0
1522
- r0 = nil
1523
- end
1524
- end
1525
- end
1526
- end
1527
- end
1528
- end
1529
- end
1530
-
1531
- node_cache[:entity][start_index] = r0
1532
-
1533
- r0
1534
- end
1535
-
1536
- module Fonts0
1537
- def s
1538
- elements[0]
1539
- end
1540
-
1541
- def s
1542
- elements[2]
1543
- end
1544
-
1545
- def font
1546
- elements[3]
1547
- end
1548
- end
1549
-
1550
- module Fonts1
1551
- def font
1552
- elements[0]
1553
- end
1554
-
1555
- def family
1556
- elements[1]
1557
- end
1558
- end
1559
-
1560
- module Fonts2
1561
- def build
1562
- Node::FontFamily.new(all.map(&:build))
1563
- end
1564
-
1565
- def all
1566
- [font] + family.elements.map {|f| f.font }
1567
- end
1568
- end
1569
-
1570
- def _nt_fonts
1571
- start_index = index
1572
- if node_cache[:fonts].has_key?(index)
1573
- cached = node_cache[:fonts][index]
1574
- @index = cached.interval.end if cached
1575
- return cached
1576
- end
1577
-
1578
- i0, s0 = index, []
1579
- r1 = _nt_font
1580
- s0 << r1
1581
- if r1
1582
- s2, i2 = [], index
1583
- loop do
1584
- i3, s3 = index, []
1585
- r4 = _nt_s
1586
- s3 << r4
1587
- if r4
1588
- if has_terminal?(',', false, index)
1589
- r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
1590
- @index += 1
1591
- else
1592
- terminal_parse_failure(',')
1593
- r5 = nil
1594
- end
1595
- s3 << r5
1596
- if r5
1597
- r6 = _nt_s
1598
- s3 << r6
1599
- if r6
1600
- r7 = _nt_font
1601
- s3 << r7
1602
- end
1603
- end
1604
- end
1605
- if s3.last
1606
- r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
1607
- r3.extend(Fonts0)
1608
- else
1609
- @index = i3
1610
- r3 = nil
1611
- end
1612
- if r3
1613
- s2 << r3
1614
- else
1615
- break
1616
- end
1617
- end
1618
- if s2.empty?
1619
- @index = i2
1620
- r2 = nil
1621
- else
1622
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1623
- end
1624
- s0 << r2
1625
- end
1626
- if s0.last
1627
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1628
- r0.extend(Fonts1)
1629
- r0.extend(Fonts2)
1630
- else
1631
- @index = i0
1632
- r0 = nil
1633
- end
1634
-
1635
- node_cache[:fonts][start_index] = r0
1636
-
1637
- r0
1638
- end
1639
-
1640
- module Font0
1641
- end
1642
-
1643
- module Font1
1644
- def build
1645
- Node::Keyword.new(text_value)
1646
- end
1647
- end
1648
-
1649
- module Font2
1650
- def build
1651
- Node::String.new(text_value)
1652
- end
1653
- end
1654
-
1655
- def _nt_font
1656
- start_index = index
1657
- if node_cache[:font].has_key?(index)
1658
- cached = node_cache[:font][index]
1659
- @index = cached.interval.end if cached
1660
- return cached
1661
- end
1662
-
1663
- i0 = index
1664
- i1, s1 = index, []
1665
- if has_terminal?('\G[a-zA-Z]', true, index)
1666
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
1667
- @index += 1
1668
- else
1669
- r2 = nil
1670
- end
1671
- s1 << r2
1672
- if r2
1673
- s3, i3 = [], index
1674
- loop do
1675
- if has_terminal?('\G[-a-zA-Z0-9]', true, index)
1676
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
1677
- @index += 1
1678
- else
1679
- r4 = nil
1680
- end
1681
- if r4
1682
- s3 << r4
1683
- else
1684
- break
1685
- end
1686
- end
1687
- r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
1688
- s1 << r3
1689
- end
1690
- if s1.last
1691
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1692
- r1.extend(Font0)
1693
- r1.extend(Font1)
1694
- else
1695
- @index = i1
1696
- r1 = nil
1697
- end
1698
- if r1
1699
- r0 = r1
1700
- else
1701
- r5 = _nt_string
1702
- r5.extend(Font2)
1703
- if r5
1704
- r0 = r5
1705
- else
1706
- @index = i0
1707
- r0 = nil
1708
- end
1709
- end
1710
-
1711
- node_cache[:font][start_index] = r0
1712
-
1713
- r0
1714
- end
1715
-
1716
- module Ident0
1717
- end
1718
-
1719
- def _nt_ident
1720
- start_index = index
1721
- if node_cache[:ident].has_key?(index)
1722
- cached = node_cache[:ident][index]
1723
- @index = cached.interval.end if cached
1724
- return cached
1725
- end
1726
-
1727
- i0, s0 = index, []
1728
- if has_terminal?('*', false, index)
1729
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
1730
- @index += 1
1731
- else
1732
- terminal_parse_failure('*')
1733
- r2 = nil
1734
- end
1735
- if r2
1736
- r1 = r2
1737
- else
1738
- r1 = instantiate_node(SyntaxNode,input, index...index)
1739
- end
1740
- s0 << r1
1741
- if r1
1742
- if has_terminal?('-', false, index)
1743
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
1744
- @index += 1
1745
- else
1746
- terminal_parse_failure('-')
1747
- r4 = nil
1748
- end
1749
- if r4
1750
- r3 = r4
1751
- else
1752
- r3 = instantiate_node(SyntaxNode,input, index...index)
1753
- end
1754
- s0 << r3
1755
- if r3
1756
- s5, i5 = [], index
1757
- loop do
1758
- if has_terminal?('\G[-a-z0-9_]', true, index)
1759
- r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
1760
- @index += 1
1761
- else
1762
- r6 = nil
1763
- end
1764
- if r6
1765
- s5 << r6
1766
- else
1767
- break
1768
- end
1769
- end
1770
- if s5.empty?
1771
- @index = i5
1772
- r5 = nil
1773
- else
1774
- r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
1775
- end
1776
- s0 << r5
1777
- end
1778
- end
1779
- if s0.last
1780
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1781
- r0.extend(Ident0)
1782
- else
1783
- @index = i0
1784
- r0 = nil
1785
- end
1786
-
1787
- node_cache[:ident][start_index] = r0
1788
-
1789
- r0
1790
- end
1791
-
1792
- module Variable0
1793
- end
1794
-
1795
- module Variable1
1796
- def build
1797
- Node::Variable.new(text_value)
1798
- end
1799
- end
1800
-
1801
- def _nt_variable
1802
- start_index = index
1803
- if node_cache[:variable].has_key?(index)
1804
- cached = node_cache[:variable][index]
1805
- @index = cached.interval.end if cached
1806
- return cached
1807
- end
1808
-
1809
- i0, s0 = index, []
1810
- if has_terminal?('@', false, index)
1811
- r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
1812
- @index += 1
1813
- else
1814
- terminal_parse_failure('@')
1815
- r1 = nil
1816
- end
1817
- s0 << r1
1818
- if r1
1819
- s2, i2 = [], index
1820
- loop do
1821
- if has_terminal?('\G[-a-zA-Z0-9_]', true, index)
1822
- r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
1823
- @index += 1
1824
- else
1825
- r3 = nil
1826
- end
1827
- if r3
1828
- s2 << r3
1829
- else
1830
- break
1831
- end
1832
- end
1833
- if s2.empty?
1834
- @index = i2
1835
- r2 = nil
1836
- else
1837
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1838
- end
1839
- s0 << r2
1840
- end
1841
- if s0.last
1842
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1843
- r0.extend(Variable0)
1844
- r0.extend(Variable1)
1845
- else
1846
- @index = i0
1847
- r0 = nil
1848
- end
1849
-
1850
- node_cache[:variable][start_index] = r0
1851
-
1852
- r0
1853
- end
1854
-
1855
- module Element0
1856
- end
1857
-
1858
- module Element1
1859
- end
1860
-
1861
- def _nt_element
1862
- start_index = index
1863
- if node_cache[:element].has_key?(index)
1864
- cached = node_cache[:element][index]
1865
- @index = cached.interval.end if cached
1866
- return cached
1867
- end
1868
-
1869
- i0 = index
1870
- i1, s1 = index, []
1871
- i2 = index
1872
- r3 = _nt_class_id
1873
- if r3
1874
- r2 = r3
1875
- else
1876
- r4 = _nt_tag
1877
- if r4
1878
- r2 = r4
1879
- else
1880
- r5 = _nt_ident
1881
- if r5
1882
- r2 = r5
1883
- else
1884
- @index = i2
1885
- r2 = nil
1886
- end
1887
- end
1888
- end
1889
- s1 << r2
1890
- if r2
1891
- s6, i6 = [], index
1892
- loop do
1893
- r7 = _nt_attribute
1894
- if r7
1895
- s6 << r7
1896
- else
1897
- break
1898
- end
1899
- end
1900
- r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
1901
- s1 << r6
1902
- if r6
1903
- i9, s9 = index, []
1904
- if has_terminal?('(', false, index)
1905
- r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
1906
- @index += 1
1907
- else
1908
- terminal_parse_failure('(')
1909
- r10 = nil
1910
- end
1911
- s9 << r10
1912
- if r10
1913
- r12 = _nt_ident
1914
- if r12
1915
- r11 = r12
1916
- else
1917
- r11 = instantiate_node(SyntaxNode,input, index...index)
1918
- end
1919
- s9 << r11
1920
- if r11
1921
- s13, i13 = [], index
1922
- loop do
1923
- r14 = _nt_attribute
1924
- if r14
1925
- s13 << r14
1926
- else
1927
- break
1928
- end
1929
- end
1930
- r13 = instantiate_node(SyntaxNode,input, i13...index, s13)
1931
- s9 << r13
1932
- if r13
1933
- if has_terminal?(')', false, index)
1934
- r15 = instantiate_node(SyntaxNode,input, index...(index + 1))
1935
- @index += 1
1936
- else
1937
- terminal_parse_failure(')')
1938
- r15 = nil
1939
- end
1940
- s9 << r15
1941
- end
1942
- end
1943
- end
1944
- if s9.last
1945
- r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
1946
- r9.extend(Element0)
1947
- else
1948
- @index = i9
1949
- r9 = nil
1950
- end
1951
- if r9
1952
- r8 = r9
1953
- else
1954
- r8 = instantiate_node(SyntaxNode,input, index...index)
1955
- end
1956
- s1 << r8
1957
- end
1958
- end
1959
- if s1.last
1960
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1961
- r1.extend(Element1)
1962
- else
1963
- @index = i1
1964
- r1 = nil
1965
- end
1966
- if r1
1967
- r0 = r1
1968
- else
1969
- s16, i16 = [], index
1970
- loop do
1971
- r17 = _nt_attribute
1972
- if r17
1973
- s16 << r17
1974
- else
1975
- break
1976
- end
1977
- end
1978
- if s16.empty?
1979
- @index = i16
1980
- r16 = nil
1981
- else
1982
- r16 = instantiate_node(SyntaxNode,input, i16...index, s16)
1983
- end
1984
- if r16
1985
- r0 = r16
1986
- else
1987
- if has_terminal?('@media', false, index)
1988
- r18 = instantiate_node(SyntaxNode,input, index...(index + 6))
1989
- @index += 6
1990
- else
1991
- terminal_parse_failure('@media')
1992
- r18 = nil
1993
- end
1994
- if r18
1995
- r0 = r18
1996
- else
1997
- if has_terminal?('@font-face', false, index)
1998
- r19 = instantiate_node(SyntaxNode,input, index...(index + 10))
1999
- @index += 10
2000
- else
2001
- terminal_parse_failure('@font-face')
2002
- r19 = nil
2003
- end
2004
- if r19
2005
- r0 = r19
2006
- else
2007
- @index = i0
2008
- r0 = nil
2009
- end
2010
- end
2011
- end
2012
- end
2013
-
2014
- node_cache[:element][start_index] = r0
2015
-
2016
- r0
2017
- end
2018
-
2019
- module ClassId0
2020
- end
2021
-
2022
- def _nt_class_id
2023
- start_index = index
2024
- if node_cache[:class_id].has_key?(index)
2025
- cached = node_cache[:class_id][index]
2026
- @index = cached.interval.end if cached
2027
- return cached
2028
- end
2029
-
2030
- i0, s0 = index, []
2031
- r2 = _nt_tag
2032
- if r2
2033
- r1 = r2
2034
- else
2035
- r1 = instantiate_node(SyntaxNode,input, index...index)
2036
- end
2037
- s0 << r1
2038
- if r1
2039
- s3, i3 = [], index
2040
- loop do
2041
- i4 = index
2042
- r5 = _nt_class
2043
- if r5
2044
- r4 = r5
2045
- else
2046
- r6 = _nt_id
2047
- if r6
2048
- r4 = r6
2049
- else
2050
- @index = i4
2051
- r4 = nil
2052
- end
2053
- end
2054
- if r4
2055
- s3 << r4
2056
- else
2057
- break
2058
- end
2059
- end
2060
- if s3.empty?
2061
- @index = i3
2062
- r3 = nil
2063
- else
2064
- r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
2065
- end
2066
- s0 << r3
2067
- end
2068
- if s0.last
2069
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2070
- r0.extend(ClassId0)
2071
- else
2072
- @index = i0
2073
- r0 = nil
2074
- end
2075
-
2076
- node_cache[:class_id][start_index] = r0
2077
-
2078
- r0
2079
- end
2080
-
2081
- module Attribute0
2082
- end
2083
-
2084
- module Attribute1
2085
- def tag
2086
- elements[1]
2087
- end
2088
-
2089
- end
2090
-
2091
- module Attribute2
2092
- end
2093
-
2094
- def _nt_attribute
2095
- start_index = index
2096
- if node_cache[:attribute].has_key?(index)
2097
- cached = node_cache[:attribute][index]
2098
- @index = cached.interval.end if cached
2099
- return cached
2100
- end
2101
-
2102
- i0 = index
2103
- i1, s1 = index, []
2104
- if has_terminal?('[', false, index)
2105
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
2106
- @index += 1
2107
- else
2108
- terminal_parse_failure('[')
2109
- r2 = nil
2110
- end
2111
- s1 << r2
2112
- if r2
2113
- r3 = _nt_tag
2114
- s1 << r3
2115
- if r3
2116
- i4, s4 = index, []
2117
- if has_terminal?('\G[|~*$^]', true, index)
2118
- r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
2119
- @index += 1
2120
- else
2121
- r6 = nil
2122
- end
2123
- if r6
2124
- r5 = r6
2125
- else
2126
- r5 = instantiate_node(SyntaxNode,input, index...index)
2127
- end
2128
- s4 << r5
2129
- if r5
2130
- if has_terminal?('=', false, index)
2131
- r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
2132
- @index += 1
2133
- else
2134
- terminal_parse_failure('=')
2135
- r7 = nil
2136
- end
2137
- s4 << r7
2138
- end
2139
- if s4.last
2140
- r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
2141
- r4.extend(Attribute0)
2142
- else
2143
- @index = i4
2144
- r4 = nil
2145
- end
2146
- s1 << r4
2147
- if r4
2148
- i8 = index
2149
- r9 = _nt_tag
2150
- if r9
2151
- r8 = r9
2152
- else
2153
- r10 = _nt_string
2154
- if r10
2155
- r8 = r10
2156
- else
2157
- @index = i8
2158
- r8 = nil
2159
- end
2160
- end
2161
- s1 << r8
2162
- if r8
2163
- if has_terminal?(']', false, index)
2164
- r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
2165
- @index += 1
2166
- else
2167
- terminal_parse_failure(']')
2168
- r11 = nil
2169
- end
2170
- s1 << r11
2171
- end
2172
- end
2173
- end
2174
- end
2175
- if s1.last
2176
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2177
- r1.extend(Attribute1)
2178
- else
2179
- @index = i1
2180
- r1 = nil
2181
- end
2182
- if r1
2183
- r0 = r1
2184
- else
2185
- i12, s12 = index, []
2186
- if has_terminal?('[', false, index)
2187
- r13 = instantiate_node(SyntaxNode,input, index...(index + 1))
2188
- @index += 1
2189
- else
2190
- terminal_parse_failure('[')
2191
- r13 = nil
2192
- end
2193
- s12 << r13
2194
- if r13
2195
- i14 = index
2196
- r15 = _nt_tag
2197
- if r15
2198
- r14 = r15
2199
- else
2200
- r16 = _nt_string
2201
- if r16
2202
- r14 = r16
2203
- else
2204
- @index = i14
2205
- r14 = nil
2206
- end
2207
- end
2208
- s12 << r14
2209
- if r14
2210
- if has_terminal?(']', false, index)
2211
- r17 = instantiate_node(SyntaxNode,input, index...(index + 1))
2212
- @index += 1
2213
- else
2214
- terminal_parse_failure(']')
2215
- r17 = nil
2216
- end
2217
- s12 << r17
2218
- end
2219
- end
2220
- if s12.last
2221
- r12 = instantiate_node(SyntaxNode,input, i12...index, s12)
2222
- r12.extend(Attribute2)
2223
- else
2224
- @index = i12
2225
- r12 = nil
2226
- end
2227
- if r12
2228
- r0 = r12
2229
- else
2230
- @index = i0
2231
- r0 = nil
2232
- end
2233
- end
2234
-
2235
- node_cache[:attribute][start_index] = r0
2236
-
2237
- r0
2238
- end
2239
-
2240
- module Class0
2241
- end
2242
-
2243
- def _nt_class
2244
- start_index = index
2245
- if node_cache[:class].has_key?(index)
2246
- cached = node_cache[:class][index]
2247
- @index = cached.interval.end if cached
2248
- return cached
2249
- end
2250
-
2251
- i0, s0 = index, []
2252
- if has_terminal?('.', false, index)
2253
- r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
2254
- @index += 1
2255
- else
2256
- terminal_parse_failure('.')
2257
- r1 = nil
2258
- end
2259
- s0 << r1
2260
- if r1
2261
- if has_terminal?('\G[_a-z]', true, index)
2262
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
2263
- @index += 1
2264
- else
2265
- r2 = nil
2266
- end
2267
- s0 << r2
2268
- if r2
2269
- s3, i3 = [], index
2270
- loop do
2271
- if has_terminal?('\G[-a-zA-Z0-9_]', true, index)
2272
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2273
- @index += 1
2274
- else
2275
- r4 = nil
2276
- end
2277
- if r4
2278
- s3 << r4
2279
- else
2280
- break
2281
- end
2282
- end
2283
- r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
2284
- s0 << r3
2285
- end
2286
- end
2287
- if s0.last
2288
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2289
- r0.extend(Class0)
2290
- else
2291
- @index = i0
2292
- r0 = nil
2293
- end
2294
-
2295
- node_cache[:class][start_index] = r0
2296
-
2297
- r0
2298
- end
2299
-
2300
- module Id0
2301
- end
2302
-
2303
- def _nt_id
2304
- start_index = index
2305
- if node_cache[:id].has_key?(index)
2306
- cached = node_cache[:id][index]
2307
- @index = cached.interval.end if cached
2308
- return cached
2309
- end
2310
-
2311
- i0, s0 = index, []
2312
- if has_terminal?('#', false, index)
2313
- r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
2314
- @index += 1
2315
- else
2316
- terminal_parse_failure('#')
2317
- r1 = nil
2318
- end
2319
- s0 << r1
2320
- if r1
2321
- if has_terminal?('\G[_a-z]', true, index)
2322
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
2323
- @index += 1
2324
- else
2325
- r2 = nil
2326
- end
2327
- s0 << r2
2328
- if r2
2329
- s3, i3 = [], index
2330
- loop do
2331
- if has_terminal?('\G[-a-zA-Z0-9_]', true, index)
2332
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2333
- @index += 1
2334
- else
2335
- r4 = nil
2336
- end
2337
- if r4
2338
- s3 << r4
2339
- else
2340
- break
2341
- end
2342
- end
2343
- r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
2344
- s0 << r3
2345
- end
2346
- end
2347
- if s0.last
2348
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2349
- r0.extend(Id0)
2350
- else
2351
- @index = i0
2352
- r0 = nil
2353
- end
2354
-
2355
- node_cache[:id][start_index] = r0
2356
-
2357
- r0
2358
- end
2359
-
2360
- module Tag0
2361
- end
2362
-
2363
- def _nt_tag
2364
- start_index = index
2365
- if node_cache[:tag].has_key?(index)
2366
- cached = node_cache[:tag][index]
2367
- @index = cached.interval.end if cached
2368
- return cached
2369
- end
2370
-
2371
- i0 = index
2372
- i1, s1 = index, []
2373
- if has_terminal?('\G[a-zA-Z]', true, index)
2374
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
2375
- @index += 1
2376
- else
2377
- r2 = nil
2378
- end
2379
- s1 << r2
2380
- if r2
2381
- s3, i3 = [], index
2382
- loop do
2383
- if has_terminal?('\G[-a-zA-Z]', true, index)
2384
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2385
- @index += 1
2386
- else
2387
- r4 = nil
2388
- end
2389
- if r4
2390
- s3 << r4
2391
- else
2392
- break
2393
- end
2394
- end
2395
- r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
2396
- s1 << r3
2397
- if r3
2398
- if has_terminal?('\G[0-9]', true, index)
2399
- r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
2400
- @index += 1
2401
- else
2402
- r6 = nil
2403
- end
2404
- if r6
2405
- r5 = r6
2406
- else
2407
- r5 = instantiate_node(SyntaxNode,input, index...index)
2408
- end
2409
- s1 << r5
2410
- end
2411
- end
2412
- if s1.last
2413
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2414
- r1.extend(Tag0)
2415
- else
2416
- @index = i1
2417
- r1 = nil
2418
- end
2419
- if r1
2420
- r0 = r1
2421
- else
2422
- if has_terminal?('*', false, index)
2423
- r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
2424
- @index += 1
2425
- else
2426
- terminal_parse_failure('*')
2427
- r7 = nil
2428
- end
2429
- if r7
2430
- r0 = r7
2431
- else
2432
- @index = i0
2433
- r0 = nil
2434
- end
2435
- end
2436
-
2437
- node_cache[:tag][start_index] = r0
2438
-
2439
- r0
2440
- end
2441
-
2442
- module Select0
2443
- def s
2444
- elements[0]
2445
- end
2446
-
2447
- def s
2448
- elements[2]
2449
- end
2450
- end
2451
-
2452
- module Select1
2453
- def s
2454
- elements[0]
2455
- end
2456
-
2457
- end
2458
-
2459
- def _nt_select
2460
- start_index = index
2461
- if node_cache[:select].has_key?(index)
2462
- cached = node_cache[:select][index]
2463
- @index = cached.interval.end if cached
2464
- return cached
2465
- end
2466
-
2467
- i1 = index
2468
- i2, s2 = index, []
2469
- r3 = _nt_s
2470
- s2 << r3
2471
- if r3
2472
- if has_terminal?('\G[+>~]', true, index)
2473
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2474
- @index += 1
2475
- else
2476
- r4 = nil
2477
- end
2478
- s2 << r4
2479
- if r4
2480
- r5 = _nt_s
2481
- s2 << r5
2482
- end
2483
- end
2484
- if s2.last
2485
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
2486
- r2.extend(Select0)
2487
- else
2488
- @index = i2
2489
- r2 = nil
2490
- end
2491
- if r2
2492
- r1 = r2
2493
- else
2494
- i6, s6 = index, []
2495
- r7 = _nt_s
2496
- s6 << r7
2497
- if r7
2498
- if has_terminal?(':', false, index)
2499
- r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
2500
- @index += 1
2501
- else
2502
- terminal_parse_failure(':')
2503
- r8 = nil
2504
- end
2505
- s6 << r8
2506
- end
2507
- if s6.last
2508
- r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
2509
- r6.extend(Select1)
2510
- else
2511
- @index = i6
2512
- r6 = nil
2513
- end
2514
- if r6
2515
- r1 = r6
2516
- else
2517
- r9 = _nt_S
2518
- if r9
2519
- r1 = r9
2520
- else
2521
- @index = i1
2522
- r1 = nil
2523
- end
2524
- end
2525
- end
2526
- if r1
2527
- r0 = r1
2528
- else
2529
- r0 = instantiate_node(SyntaxNode,input, index...index)
2530
- end
2531
-
2532
- node_cache[:select][start_index] = r0
2533
-
2534
- r0
2535
- end
2536
-
2537
- module Accessor0
2538
- def ident
2539
- elements[0]
2540
- end
2541
-
2542
- def attr
2543
- elements[2]
2544
- end
2545
-
2546
- end
2547
-
2548
- module Accessor1
2549
- def build env
2550
- env.nearest(ident.text_value)[attr.text_value.delete(%q["'])].evaluate
2551
- end
2552
- end
2553
-
2554
- def _nt_accessor
2555
- start_index = index
2556
- if node_cache[:accessor].has_key?(index)
2557
- cached = node_cache[:accessor][index]
2558
- @index = cached.interval.end if cached
2559
- return cached
2560
- end
2561
-
2562
- i0, s0 = index, []
2563
- i1 = index
2564
- r2 = _nt_class_id
2565
- if r2
2566
- r1 = r2
2567
- else
2568
- r3 = _nt_tag
2569
- if r3
2570
- r1 = r3
2571
- else
2572
- @index = i1
2573
- r1 = nil
2574
- end
2575
- end
2576
- s0 << r1
2577
- if r1
2578
- if has_terminal?('[', false, index)
2579
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2580
- @index += 1
2581
- else
2582
- terminal_parse_failure('[')
2583
- r4 = nil
2584
- end
2585
- s0 << r4
2586
- if r4
2587
- i5 = index
2588
- r6 = _nt_string
2589
- if r6
2590
- r5 = r6
2591
- else
2592
- r7 = _nt_variable
2593
- if r7
2594
- r5 = r7
2595
- else
2596
- @index = i5
2597
- r5 = nil
2598
- end
2599
- end
2600
- s0 << r5
2601
- if r5
2602
- if has_terminal?(']', false, index)
2603
- r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
2604
- @index += 1
2605
- else
2606
- terminal_parse_failure(']')
2607
- r8 = nil
2608
- end
2609
- s0 << r8
2610
- end
2611
- end
2612
- end
2613
- if s0.last
2614
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2615
- r0.extend(Accessor0)
2616
- r0.extend(Accessor1)
2617
- else
2618
- @index = i0
2619
- r0 = nil
2620
- end
2621
-
2622
- node_cache[:accessor][start_index] = r0
2623
-
2624
- r0
2625
- end
2626
-
2627
- module Operator0
2628
- def S
2629
- elements[0]
2630
- end
2631
-
2632
- def S
2633
- elements[2]
2634
- end
2635
- end
2636
-
2637
- module Operator1
2638
- def build env
2639
- Node::Operator.new(text_value.strip)
2640
- end
2641
- end
2642
-
2643
- module Operator2
2644
- def build env
2645
- Node::Operator.new(text_value)
2646
- end
2647
- end
2648
-
2649
- def _nt_operator
2650
- start_index = index
2651
- if node_cache[:operator].has_key?(index)
2652
- cached = node_cache[:operator][index]
2653
- @index = cached.interval.end if cached
2654
- return cached
2655
- end
2656
-
2657
- i0 = index
2658
- i1, s1 = index, []
2659
- r2 = _nt_S
2660
- s1 << r2
2661
- if r2
2662
- if has_terminal?('\G[-+*/]', true, index)
2663
- r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
2664
- @index += 1
2665
- else
2666
- r3 = nil
2667
- end
2668
- s1 << r3
2669
- if r3
2670
- r4 = _nt_S
2671
- s1 << r4
2672
- end
2673
- end
2674
- if s1.last
2675
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2676
- r1.extend(Operator0)
2677
- r1.extend(Operator1)
2678
- else
2679
- @index = i1
2680
- r1 = nil
2681
- end
2682
- if r1
2683
- r0 = r1
2684
- else
2685
- if has_terminal?('\G[-+*/]', true, index)
2686
- r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
2687
- r5.extend(Operator2)
2688
- @index += 1
2689
- else
2690
- r5 = nil
2691
- end
2692
- if r5
2693
- r0 = r5
2694
- else
2695
- @index = i0
2696
- r0 = nil
2697
- end
2698
- end
2699
-
2700
- node_cache[:operator][start_index] = r0
2701
-
2702
- r0
2703
- end
2704
-
2705
- module Literal0
2706
- def dimension
2707
- elements[2]
2708
- end
2709
- end
2710
-
2711
- module Literal1
2712
- def build
2713
- Node::Anonymous.new(text_value)
2714
- end
2715
- end
2716
-
2717
- module Literal2
2718
- def number
2719
- elements[0]
2720
- end
2721
-
2722
- def unit
2723
- elements[1]
2724
- end
2725
- end
2726
-
2727
- module Literal3
2728
- def build
2729
- Node::Number.new(number.text_value, unit.text_value)
2730
- end
2731
- end
2732
-
2733
- module Literal4
2734
- def build
2735
- Node::String.new(text_value)
2736
- end
2737
- end
2738
-
2739
- def _nt_literal
2740
- start_index = index
2741
- if node_cache[:literal].has_key?(index)
2742
- cached = node_cache[:literal][index]
2743
- @index = cached.interval.end if cached
2744
- return cached
2745
- end
2746
-
2747
- i0 = index
2748
- r1 = _nt_color
2749
- if r1
2750
- r0 = r1
2751
- else
2752
- i2, s2 = index, []
2753
- i3 = index
2754
- r4 = _nt_dimension
2755
- if r4
2756
- r3 = r4
2757
- else
2758
- s5, i5 = [], index
2759
- loop do
2760
- if has_terminal?('\G[-a-z]', true, index)
2761
- r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
2762
- @index += 1
2763
- else
2764
- r6 = nil
2765
- end
2766
- if r6
2767
- s5 << r6
2768
- else
2769
- break
2770
- end
2771
- end
2772
- if s5.empty?
2773
- @index = i5
2774
- r5 = nil
2775
- else
2776
- r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
2777
- end
2778
- if r5
2779
- r3 = r5
2780
- else
2781
- @index = i3
2782
- r3 = nil
2783
- end
2784
- end
2785
- s2 << r3
2786
- if r3
2787
- if has_terminal?('/', false, index)
2788
- r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
2789
- @index += 1
2790
- else
2791
- terminal_parse_failure('/')
2792
- r7 = nil
2793
- end
2794
- s2 << r7
2795
- if r7
2796
- r8 = _nt_dimension
2797
- s2 << r8
2798
- end
2799
- end
2800
- if s2.last
2801
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
2802
- r2.extend(Literal0)
2803
- r2.extend(Literal1)
2804
- else
2805
- @index = i2
2806
- r2 = nil
2807
- end
2808
- if r2
2809
- r0 = r2
2810
- else
2811
- i9, s9 = index, []
2812
- r10 = _nt_number
2813
- s9 << r10
2814
- if r10
2815
- r11 = _nt_unit
2816
- s9 << r11
2817
- end
2818
- if s9.last
2819
- r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
2820
- r9.extend(Literal2)
2821
- r9.extend(Literal3)
2822
- else
2823
- @index = i9
2824
- r9 = nil
2825
- end
2826
- if r9
2827
- r0 = r9
2828
- else
2829
- r12 = _nt_string
2830
- r12.extend(Literal4)
2831
- if r12
2832
- r0 = r12
2833
- else
2834
- @index = i0
2835
- r0 = nil
2836
- end
2837
- end
2838
- end
2839
- end
2840
-
2841
- node_cache[:literal][start_index] = r0
2842
-
2843
- r0
2844
- end
2845
-
2846
- module Important0
2847
- def build
2848
- Node::Keyword.new(text_value)
2849
- end
2850
- end
2851
-
2852
- def _nt_important
2853
- start_index = index
2854
- if node_cache[:important].has_key?(index)
2855
- cached = node_cache[:important][index]
2856
- @index = cached.interval.end if cached
2857
- return cached
2858
- end
2859
-
2860
- if has_terminal?('!important', false, index)
2861
- r0 = instantiate_node(SyntaxNode,input, index...(index + 10))
2862
- r0.extend(Important0)
2863
- @index += 10
2864
- else
2865
- terminal_parse_failure('!important')
2866
- r0 = nil
2867
- end
2868
-
2869
- node_cache[:important][start_index] = r0
2870
-
2871
- r0
2872
- end
2873
-
2874
- module Keyword0
2875
- end
2876
-
2877
- module Keyword1
2878
- def build
2879
- Node::Keyword.new(text_value)
2880
- end
2881
- end
2882
-
2883
- def _nt_keyword
2884
- start_index = index
2885
- if node_cache[:keyword].has_key?(index)
2886
- cached = node_cache[:keyword][index]
2887
- @index = cached.interval.end if cached
2888
- return cached
2889
- end
2890
-
2891
- i0, s0 = index, []
2892
- s1, i1 = [], index
2893
- loop do
2894
- if has_terminal?('\G[-a-zA-Z]', true, index)
2895
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
2896
- @index += 1
2897
- else
2898
- r2 = nil
2899
- end
2900
- if r2
2901
- s1 << r2
2902
- else
2903
- break
2904
- end
2905
- end
2906
- if s1.empty?
2907
- @index = i1
2908
- r1 = nil
2909
- else
2910
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2911
- end
2912
- s0 << r1
2913
- if r1
2914
- i3 = index
2915
- r4 = _nt_ns
2916
- if r4
2917
- r3 = nil
2918
- else
2919
- @index = i3
2920
- r3 = instantiate_node(SyntaxNode,input, index...index)
2921
- end
2922
- s0 << r3
2923
- end
2924
- if s0.last
2925
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2926
- r0.extend(Keyword0)
2927
- r0.extend(Keyword1)
2928
- else
2929
- @index = i0
2930
- r0 = nil
2931
- end
2932
-
2933
- node_cache[:keyword][start_index] = r0
2934
-
2935
- r0
2936
- end
2937
-
2938
- module String0
2939
- end
2940
-
2941
- module String1
2942
- def content
2943
- elements[1]
2944
- end
2945
-
2946
- end
2947
-
2948
- module String2
2949
- def value
2950
- content.text_value
2951
- end
2952
- end
2953
-
2954
- module String3
2955
- end
2956
-
2957
- module String4
2958
- def content
2959
- elements[1]
2960
- end
2961
-
2962
- end
2963
-
2964
- module String5
2965
- def value
2966
- content.text_value
2967
- end
2968
- end
2969
-
2970
- def _nt_string
2971
- start_index = index
2972
- if node_cache[:string].has_key?(index)
2973
- cached = node_cache[:string][index]
2974
- @index = cached.interval.end if cached
2975
- return cached
2976
- end
2977
-
2978
- i0 = index
2979
- i1, s1 = index, []
2980
- if has_terminal?("'", false, index)
2981
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
2982
- @index += 1
2983
- else
2984
- terminal_parse_failure("'")
2985
- r2 = nil
2986
- end
2987
- s1 << r2
2988
- if r2
2989
- s3, i3 = [], index
2990
- loop do
2991
- i4, s4 = index, []
2992
- i5 = index
2993
- if has_terminal?("'", false, index)
2994
- r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
2995
- @index += 1
2996
- else
2997
- terminal_parse_failure("'")
2998
- r6 = nil
2999
- end
3000
- if r6
3001
- r5 = nil
3002
- else
3003
- @index = i5
3004
- r5 = instantiate_node(SyntaxNode,input, index...index)
3005
- end
3006
- s4 << r5
3007
- if r5
3008
- if index < input_length
3009
- r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
3010
- @index += 1
3011
- else
3012
- terminal_parse_failure("any character")
3013
- r7 = nil
3014
- end
3015
- s4 << r7
3016
- end
3017
- if s4.last
3018
- r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
3019
- r4.extend(String0)
3020
- else
3021
- @index = i4
3022
- r4 = nil
3023
- end
3024
- if r4
3025
- s3 << r4
3026
- else
3027
- break
3028
- end
3029
- end
3030
- r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
3031
- s1 << r3
3032
- if r3
3033
- if has_terminal?("'", false, index)
3034
- r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
3035
- @index += 1
3036
- else
3037
- terminal_parse_failure("'")
3038
- r8 = nil
3039
- end
3040
- s1 << r8
3041
- end
3042
- end
3043
- if s1.last
3044
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3045
- r1.extend(String1)
3046
- r1.extend(String2)
3047
- else
3048
- @index = i1
3049
- r1 = nil
3050
- end
3051
- if r1
3052
- r0 = r1
3053
- else
3054
- i9, s9 = index, []
3055
- if has_terminal?('\G["]', true, index)
3056
- r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
3057
- @index += 1
3058
- else
3059
- r10 = nil
3060
- end
3061
- s9 << r10
3062
- if r10
3063
- s11, i11 = [], index
3064
- loop do
3065
- i12, s12 = index, []
3066
- i13 = index
3067
- if has_terminal?('\G["]', true, index)
3068
- r14 = instantiate_node(SyntaxNode,input, index...(index + 1))
3069
- @index += 1
3070
- else
3071
- r14 = nil
3072
- end
3073
- if r14
3074
- r13 = nil
3075
- else
3076
- @index = i13
3077
- r13 = instantiate_node(SyntaxNode,input, index...index)
3078
- end
3079
- s12 << r13
3080
- if r13
3081
- if index < input_length
3082
- r15 = instantiate_node(SyntaxNode,input, index...(index + 1))
3083
- @index += 1
3084
- else
3085
- terminal_parse_failure("any character")
3086
- r15 = nil
3087
- end
3088
- s12 << r15
3089
- end
3090
- if s12.last
3091
- r12 = instantiate_node(SyntaxNode,input, i12...index, s12)
3092
- r12.extend(String3)
3093
- else
3094
- @index = i12
3095
- r12 = nil
3096
- end
3097
- if r12
3098
- s11 << r12
3099
- else
3100
- break
3101
- end
3102
- end
3103
- r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
3104
- s9 << r11
3105
- if r11
3106
- if has_terminal?('\G["]', true, index)
3107
- r16 = instantiate_node(SyntaxNode,input, index...(index + 1))
3108
- @index += 1
3109
- else
3110
- r16 = nil
3111
- end
3112
- s9 << r16
3113
- end
3114
- end
3115
- if s9.last
3116
- r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
3117
- r9.extend(String4)
3118
- r9.extend(String5)
3119
- else
3120
- @index = i9
3121
- r9 = nil
3122
- end
3123
- if r9
3124
- r0 = r9
3125
- else
3126
- @index = i0
3127
- r0 = nil
3128
- end
3129
- end
3130
-
3131
- node_cache[:string][start_index] = r0
3132
-
3133
- r0
3134
- end
3135
-
3136
- module Dimension0
3137
- def number
3138
- elements[0]
3139
- end
3140
-
3141
- def unit
3142
- elements[1]
3143
- end
3144
- end
3145
-
3146
- def _nt_dimension
3147
- start_index = index
3148
- if node_cache[:dimension].has_key?(index)
3149
- cached = node_cache[:dimension][index]
3150
- @index = cached.interval.end if cached
3151
- return cached
3152
- end
3153
-
3154
- i0, s0 = index, []
3155
- r1 = _nt_number
3156
- s0 << r1
3157
- if r1
3158
- r2 = _nt_unit
3159
- s0 << r2
3160
- end
3161
- if s0.last
3162
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3163
- r0.extend(Dimension0)
3164
- else
3165
- @index = i0
3166
- r0 = nil
3167
- end
3168
-
3169
- node_cache[:dimension][start_index] = r0
3170
-
3171
- r0
3172
- end
3173
-
3174
- module Number0
3175
- end
3176
-
3177
- module Number1
3178
- end
3179
-
3180
- def _nt_number
3181
- start_index = index
3182
- if node_cache[:number].has_key?(index)
3183
- cached = node_cache[:number][index]
3184
- @index = cached.interval.end if cached
3185
- return cached
3186
- end
3187
-
3188
- i0 = index
3189
- i1, s1 = index, []
3190
- if has_terminal?('-', false, index)
3191
- r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
3192
- @index += 1
3193
- else
3194
- terminal_parse_failure('-')
3195
- r3 = nil
3196
- end
3197
- if r3
3198
- r2 = r3
3199
- else
3200
- r2 = instantiate_node(SyntaxNode,input, index...index)
3201
- end
3202
- s1 << r2
3203
- if r2
3204
- s4, i4 = [], index
3205
- loop do
3206
- if has_terminal?('\G[0-9]', true, index)
3207
- r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
3208
- @index += 1
3209
- else
3210
- r5 = nil
3211
- end
3212
- if r5
3213
- s4 << r5
3214
- else
3215
- break
3216
- end
3217
- end
3218
- r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
3219
- s1 << r4
3220
- if r4
3221
- if has_terminal?('.', false, index)
3222
- r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
3223
- @index += 1
3224
- else
3225
- terminal_parse_failure('.')
3226
- r6 = nil
3227
- end
3228
- s1 << r6
3229
- if r6
3230
- s7, i7 = [], index
3231
- loop do
3232
- if has_terminal?('\G[0-9]', true, index)
3233
- r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
3234
- @index += 1
3235
- else
3236
- r8 = nil
3237
- end
3238
- if r8
3239
- s7 << r8
3240
- else
3241
- break
3242
- end
3243
- end
3244
- if s7.empty?
3245
- @index = i7
3246
- r7 = nil
3247
- else
3248
- r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
3249
- end
3250
- s1 << r7
3251
- end
3252
- end
3253
- end
3254
- if s1.last
3255
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3256
- r1.extend(Number0)
3257
- else
3258
- @index = i1
3259
- r1 = nil
3260
- end
3261
- if r1
3262
- r0 = r1
3263
- else
3264
- i9, s9 = index, []
3265
- if has_terminal?('-', false, index)
3266
- r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
3267
- @index += 1
3268
- else
3269
- terminal_parse_failure('-')
3270
- r11 = nil
3271
- end
3272
- if r11
3273
- r10 = r11
3274
- else
3275
- r10 = instantiate_node(SyntaxNode,input, index...index)
3276
- end
3277
- s9 << r10
3278
- if r10
3279
- s12, i12 = [], index
3280
- loop do
3281
- if has_terminal?('\G[0-9]', true, index)
3282
- r13 = instantiate_node(SyntaxNode,input, index...(index + 1))
3283
- @index += 1
3284
- else
3285
- r13 = nil
3286
- end
3287
- if r13
3288
- s12 << r13
3289
- else
3290
- break
3291
- end
3292
- end
3293
- if s12.empty?
3294
- @index = i12
3295
- r12 = nil
3296
- else
3297
- r12 = instantiate_node(SyntaxNode,input, i12...index, s12)
3298
- end
3299
- s9 << r12
3300
- end
3301
- if s9.last
3302
- r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
3303
- r9.extend(Number1)
3304
- else
3305
- @index = i9
3306
- r9 = nil
3307
- end
3308
- if r9
3309
- r0 = r9
3310
- else
3311
- @index = i0
3312
- r0 = nil
3313
- end
3314
- end
3315
-
3316
- node_cache[:number][start_index] = r0
3317
-
3318
- r0
3319
- end
3320
-
3321
- def _nt_unit
3322
- start_index = index
3323
- if node_cache[:unit].has_key?(index)
3324
- cached = node_cache[:unit][index]
3325
- @index = cached.interval.end if cached
3326
- return cached
3327
- end
3328
-
3329
- i1 = index
3330
- if has_terminal?('px', false, index)
3331
- r2 = instantiate_node(SyntaxNode,input, index...(index + 2))
3332
- @index += 2
3333
- else
3334
- terminal_parse_failure('px')
3335
- r2 = nil
3336
- end
3337
- if r2
3338
- r1 = r2
3339
- else
3340
- if has_terminal?('em', false, index)
3341
- r3 = instantiate_node(SyntaxNode,input, index...(index + 2))
3342
- @index += 2
3343
- else
3344
- terminal_parse_failure('em')
3345
- r3 = nil
3346
- end
3347
- if r3
3348
- r1 = r3
3349
- else
3350
- if has_terminal?('pc', false, index)
3351
- r4 = instantiate_node(SyntaxNode,input, index...(index + 2))
3352
- @index += 2
3353
- else
3354
- terminal_parse_failure('pc')
3355
- r4 = nil
3356
- end
3357
- if r4
3358
- r1 = r4
3359
- else
3360
- if has_terminal?('%', false, index)
3361
- r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
3362
- @index += 1
3363
- else
3364
- terminal_parse_failure('%')
3365
- r5 = nil
3366
- end
3367
- if r5
3368
- r1 = r5
3369
- else
3370
- if has_terminal?('pt', false, index)
3371
- r6 = instantiate_node(SyntaxNode,input, index...(index + 2))
3372
- @index += 2
3373
- else
3374
- terminal_parse_failure('pt')
3375
- r6 = nil
3376
- end
3377
- if r6
3378
- r1 = r6
3379
- else
3380
- if has_terminal?('cm', false, index)
3381
- r7 = instantiate_node(SyntaxNode,input, index...(index + 2))
3382
- @index += 2
3383
- else
3384
- terminal_parse_failure('cm')
3385
- r7 = nil
3386
- end
3387
- if r7
3388
- r1 = r7
3389
- else
3390
- if has_terminal?('mm', false, index)
3391
- r8 = instantiate_node(SyntaxNode,input, index...(index + 2))
3392
- @index += 2
3393
- else
3394
- terminal_parse_failure('mm')
3395
- r8 = nil
3396
- end
3397
- if r8
3398
- r1 = r8
3399
- else
3400
- @index = i1
3401
- r1 = nil
3402
- end
3403
- end
3404
- end
3405
- end
3406
- end
3407
- end
3408
- end
3409
- if r1
3410
- r0 = r1
3411
- else
3412
- r0 = instantiate_node(SyntaxNode,input, index...index)
3413
- end
3414
-
3415
- node_cache[:unit][start_index] = r0
3416
-
3417
- r0
3418
- end
3419
-
3420
- module Color0
3421
- def rgb
3422
- elements[1]
3423
- end
3424
- end
3425
-
3426
- module Color1
3427
- def build
3428
- Node::Color.new(*rgb.build)
3429
- end
3430
- end
3431
-
3432
- module Color2
3433
- end
3434
-
3435
- module Color3
3436
- def fn
3437
- elements[0]
3438
- end
3439
-
3440
- def arguments
3441
- elements[1]
3442
- end
3443
- end
3444
-
3445
- module Color4
3446
- def build
3447
- Node::Function.new(fn.text_value, arguments.build.flatten)
3448
- end
3449
- end
3450
-
3451
- def _nt_color
3452
- start_index = index
3453
- if node_cache[:color].has_key?(index)
3454
- cached = node_cache[:color][index]
3455
- @index = cached.interval.end if cached
3456
- return cached
3457
- end
3458
-
3459
- i0 = index
3460
- i1, s1 = index, []
3461
- if has_terminal?('#', false, index)
3462
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
3463
- @index += 1
3464
- else
3465
- terminal_parse_failure('#')
3466
- r2 = nil
3467
- end
3468
- s1 << r2
3469
- if r2
3470
- r3 = _nt_rgb
3471
- s1 << r3
3472
- end
3473
- if s1.last
3474
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3475
- r1.extend(Color0)
3476
- r1.extend(Color1)
3477
- else
3478
- @index = i1
3479
- r1 = nil
3480
- end
3481
- if r1
3482
- r0 = r1
3483
- else
3484
- i4, s4 = index, []
3485
- i5, s5 = index, []
3486
- i6 = index
3487
- if has_terminal?('hsl', false, index)
3488
- r7 = instantiate_node(SyntaxNode,input, index...(index + 3))
3489
- @index += 3
3490
- else
3491
- terminal_parse_failure('hsl')
3492
- r7 = nil
3493
- end
3494
- if r7
3495
- r6 = r7
3496
- else
3497
- if has_terminal?('rgb', false, index)
3498
- r8 = instantiate_node(SyntaxNode,input, index...(index + 3))
3499
- @index += 3
3500
- else
3501
- terminal_parse_failure('rgb')
3502
- r8 = nil
3503
- end
3504
- if r8
3505
- r6 = r8
3506
- else
3507
- @index = i6
3508
- r6 = nil
3509
- end
3510
- end
3511
- s5 << r6
3512
- if r6
3513
- if has_terminal?('a', false, index)
3514
- r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
3515
- @index += 1
3516
- else
3517
- terminal_parse_failure('a')
3518
- r10 = nil
3519
- end
3520
- if r10
3521
- r9 = r10
3522
- else
3523
- r9 = instantiate_node(SyntaxNode,input, index...index)
3524
- end
3525
- s5 << r9
3526
- end
3527
- if s5.last
3528
- r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
3529
- r5.extend(Color2)
3530
- else
3531
- @index = i5
3532
- r5 = nil
3533
- end
3534
- s4 << r5
3535
- if r5
3536
- r11 = _nt_arguments
3537
- s4 << r11
3538
- end
3539
- if s4.last
3540
- r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
3541
- r4.extend(Color3)
3542
- r4.extend(Color4)
3543
- else
3544
- @index = i4
3545
- r4 = nil
3546
- end
3547
- if r4
3548
- r0 = r4
3549
- else
3550
- @index = i0
3551
- r0 = nil
3552
- end
3553
- end
3554
-
3555
- node_cache[:color][start_index] = r0
3556
-
3557
- r0
3558
- end
3559
-
3560
- module Rgb0
3561
- def hex
3562
- elements[0]
3563
- end
3564
-
3565
- def hex
3566
- elements[1]
3567
- end
3568
- end
3569
-
3570
- module Rgb1
3571
- def hex
3572
- elements[0]
3573
- end
3574
-
3575
- def hex
3576
- elements[1]
3577
- end
3578
- end
3579
-
3580
- module Rgb2
3581
- def hex
3582
- elements[0]
3583
- end
3584
-
3585
- def hex
3586
- elements[1]
3587
- end
3588
- end
3589
-
3590
- module Rgb3
3591
- def r
3592
- elements[0]
3593
- end
3594
-
3595
- def g
3596
- elements[1]
3597
- end
3598
-
3599
- def b
3600
- elements[2]
3601
- end
3602
- end
3603
-
3604
- module Rgb4
3605
- def build
3606
- [r.text_value, g.text_value, b.text_value]
3607
- end
3608
- end
3609
-
3610
- module Rgb5
3611
- def r
3612
- elements[0]
3613
- end
3614
-
3615
- def g
3616
- elements[1]
3617
- end
3618
-
3619
- def b
3620
- elements[2]
3621
- end
3622
- end
3623
-
3624
- module Rgb6
3625
- def build
3626
- [r.text_value, g.text_value, b.text_value].map {|c| c * 2 }
3627
- end
3628
- end
3629
-
3630
- def _nt_rgb
3631
- start_index = index
3632
- if node_cache[:rgb].has_key?(index)
3633
- cached = node_cache[:rgb][index]
3634
- @index = cached.interval.end if cached
3635
- return cached
3636
- end
3637
-
3638
- i0 = index
3639
- i1, s1 = index, []
3640
- i2, s2 = index, []
3641
- r3 = _nt_hex
3642
- s2 << r3
3643
- if r3
3644
- r4 = _nt_hex
3645
- s2 << r4
3646
- end
3647
- if s2.last
3648
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3649
- r2.extend(Rgb0)
3650
- else
3651
- @index = i2
3652
- r2 = nil
3653
- end
3654
- s1 << r2
3655
- if r2
3656
- i5, s5 = index, []
3657
- r6 = _nt_hex
3658
- s5 << r6
3659
- if r6
3660
- r7 = _nt_hex
3661
- s5 << r7
3662
- end
3663
- if s5.last
3664
- r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
3665
- r5.extend(Rgb1)
3666
- else
3667
- @index = i5
3668
- r5 = nil
3669
- end
3670
- s1 << r5
3671
- if r5
3672
- i8, s8 = index, []
3673
- r9 = _nt_hex
3674
- s8 << r9
3675
- if r9
3676
- r10 = _nt_hex
3677
- s8 << r10
3678
- end
3679
- if s8.last
3680
- r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
3681
- r8.extend(Rgb2)
3682
- else
3683
- @index = i8
3684
- r8 = nil
3685
- end
3686
- s1 << r8
3687
- end
3688
- end
3689
- if s1.last
3690
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3691
- r1.extend(Rgb3)
3692
- r1.extend(Rgb4)
3693
- else
3694
- @index = i1
3695
- r1 = nil
3696
- end
3697
- if r1
3698
- r0 = r1
3699
- else
3700
- i11, s11 = index, []
3701
- r12 = _nt_hex
3702
- s11 << r12
3703
- if r12
3704
- r13 = _nt_hex
3705
- s11 << r13
3706
- if r13
3707
- r14 = _nt_hex
3708
- s11 << r14
3709
- end
3710
- end
3711
- if s11.last
3712
- r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
3713
- r11.extend(Rgb5)
3714
- r11.extend(Rgb6)
3715
- else
3716
- @index = i11
3717
- r11 = nil
3718
- end
3719
- if r11
3720
- r0 = r11
3721
- else
3722
- @index = i0
3723
- r0 = nil
3724
- end
3725
- end
3726
-
3727
- node_cache[:rgb][start_index] = r0
3728
-
3729
- r0
3730
- end
3731
-
3732
- def _nt_hex
3733
- start_index = index
3734
- if node_cache[:hex].has_key?(index)
3735
- cached = node_cache[:hex][index]
3736
- @index = cached.interval.end if cached
3737
- return cached
3738
- end
3739
-
3740
- if has_terminal?('\G[a-fA-F0-9]', true, index)
3741
- r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
3742
- @index += 1
3743
- else
3744
- r0 = nil
3745
- end
3746
-
3747
- node_cache[:hex][start_index] = r0
3748
-
3749
- r0
3750
- end
3751
-
3752
- module Function0
3753
- def name
3754
- elements[0]
3755
- end
3756
-
3757
- def arguments
3758
- elements[1]
3759
- end
3760
- end
3761
-
3762
- module Function1
3763
- def build
3764
- Node::Function.new(name.text_value, [arguments.build].flatten)
3765
- end
3766
- end
3767
-
3768
- def _nt_function
3769
- start_index = index
3770
- if node_cache[:function].has_key?(index)
3771
- cached = node_cache[:function][index]
3772
- @index = cached.interval.end if cached
3773
- return cached
3774
- end
3775
-
3776
- i0, s0 = index, []
3777
- s1, i1 = [], index
3778
- loop do
3779
- if has_terminal?('\G[-a-zA-Z_]', true, index)
3780
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
3781
- @index += 1
3782
- else
3783
- r2 = nil
3784
- end
3785
- if r2
3786
- s1 << r2
3787
- else
3788
- break
3789
- end
3790
- end
3791
- if s1.empty?
3792
- @index = i1
3793
- r1 = nil
3794
- else
3795
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3796
- end
3797
- s0 << r1
3798
- if r1
3799
- r3 = _nt_arguments
3800
- s0 << r3
3801
- end
3802
- if s0.last
3803
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3804
- r0.extend(Function0)
3805
- r0.extend(Function1)
3806
- else
3807
- @index = i0
3808
- r0 = nil
3809
- end
3810
-
3811
- node_cache[:function][start_index] = r0
3812
-
3813
- r0
3814
- end
3815
-
3816
- module Arguments0
3817
- def s
3818
- elements[1]
3819
- end
3820
-
3821
- def argument
3822
- elements[2]
3823
- end
3824
-
3825
- def s
3826
- elements[3]
3827
- end
3828
- end
3829
-
3830
- module Arguments1
3831
- def s
3832
- elements[1]
3833
- end
3834
-
3835
- def argument
3836
- elements[2]
3837
- end
3838
-
3839
- def s
3840
- elements[3]
3841
- end
3842
-
3843
- def tail
3844
- elements[4]
3845
- end
3846
-
3847
- end
3848
-
3849
- module Arguments2
3850
- def build
3851
- all.map do |e|
3852
- e.build if e.respond_to? :build
3853
- end.compact
3854
- end
3855
-
3856
- def all
3857
- [argument] + tail.elements.map {|e| e.argument }
3858
- end
3859
- end
3860
-
3861
- def _nt_arguments
3862
- start_index = index
3863
- if node_cache[:arguments].has_key?(index)
3864
- cached = node_cache[:arguments][index]
3865
- @index = cached.interval.end if cached
3866
- return cached
3867
- end
3868
-
3869
- i0, s0 = index, []
3870
- if has_terminal?('(', false, index)
3871
- r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
3872
- @index += 1
3873
- else
3874
- terminal_parse_failure('(')
3875
- r1 = nil
3876
- end
3877
- s0 << r1
3878
- if r1
3879
- r2 = _nt_s
3880
- s0 << r2
3881
- if r2
3882
- r3 = _nt_argument
3883
- s0 << r3
3884
- if r3
3885
- r4 = _nt_s
3886
- s0 << r4
3887
- if r4
3888
- s5, i5 = [], index
3889
- loop do
3890
- i6, s6 = index, []
3891
- if has_terminal?(',', false, index)
3892
- r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
3893
- @index += 1
3894
- else
3895
- terminal_parse_failure(',')
3896
- r7 = nil
3897
- end
3898
- s6 << r7
3899
- if r7
3900
- r8 = _nt_s
3901
- s6 << r8
3902
- if r8
3903
- r9 = _nt_argument
3904
- s6 << r9
3905
- if r9
3906
- r10 = _nt_s
3907
- s6 << r10
3908
- end
3909
- end
3910
- end
3911
- if s6.last
3912
- r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
3913
- r6.extend(Arguments0)
3914
- else
3915
- @index = i6
3916
- r6 = nil
3917
- end
3918
- if r6
3919
- s5 << r6
3920
- else
3921
- break
3922
- end
3923
- end
3924
- r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
3925
- s0 << r5
3926
- if r5
3927
- if has_terminal?(')', false, index)
3928
- r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
3929
- @index += 1
3930
- else
3931
- terminal_parse_failure(')')
3932
- r11 = nil
3933
- end
3934
- s0 << r11
3935
- end
3936
- end
3937
- end
3938
- end
3939
- end
3940
- if s0.last
3941
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3942
- r0.extend(Arguments1)
3943
- r0.extend(Arguments2)
3944
- else
3945
- @index = i0
3946
- r0 = nil
3947
- end
3948
-
3949
- node_cache[:arguments][start_index] = r0
3950
-
3951
- r0
3952
- end
3953
-
3954
- module Argument0
3955
- def number
3956
- elements[0]
3957
- end
3958
-
3959
- def unit
3960
- elements[1]
3961
- end
3962
- end
3963
-
3964
- module Argument1
3965
- def build
3966
- Node::Number.new number.text_value, unit.text_value
3967
- end
3968
- end
3969
-
3970
- module Argument2
3971
- def build
3972
- Node::String.new text_value
3973
- end
3974
- end
3975
-
3976
- module Argument3
3977
- def dimension
3978
- elements[2]
3979
- end
3980
- end
3981
-
3982
- module Argument4
3983
- def build
3984
- Node::Anonymous.new text_value
3985
- end
3986
- end
3987
-
3988
- module Argument5
3989
- def build
3990
- Node::String.new text_value
3991
- end
3992
- end
3993
-
3994
- module Argument6
3995
- def S
3996
- elements[0]
3997
- end
3998
-
3999
- def keyword
4000
- elements[1]
4001
- end
4002
- end
4003
-
4004
- module Argument7
4005
- def keyword
4006
- elements[0]
4007
- end
4008
-
4009
- def other
4010
- elements[1]
4011
- end
4012
- end
4013
-
4014
- module Argument8
4015
- def build
4016
- end
4017
- end
4018
-
4019
- def _nt_argument
4020
- start_index = index
4021
- if node_cache[:argument].has_key?(index)
4022
- cached = node_cache[:argument][index]
4023
- @index = cached.interval.end if cached
4024
- return cached
4025
- end
4026
-
4027
- i0 = index
4028
- r1 = _nt_color
4029
- if r1
4030
- r0 = r1
4031
- else
4032
- i2, s2 = index, []
4033
- r3 = _nt_number
4034
- s2 << r3
4035
- if r3
4036
- r4 = _nt_unit
4037
- s2 << r4
4038
- end
4039
- if s2.last
4040
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
4041
- r2.extend(Argument0)
4042
- r2.extend(Argument1)
4043
- else
4044
- @index = i2
4045
- r2 = nil
4046
- end
4047
- if r2
4048
- r0 = r2
4049
- else
4050
- r5 = _nt_string
4051
- r5.extend(Argument2)
4052
- if r5
4053
- r0 = r5
4054
- else
4055
- i6, s6 = index, []
4056
- s7, i7 = [], index
4057
- loop do
4058
- if has_terminal?('\G[a-zA-Z]', true, index)
4059
- r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
4060
- @index += 1
4061
- else
4062
- r8 = nil
4063
- end
4064
- if r8
4065
- s7 << r8
4066
- else
4067
- break
4068
- end
4069
- end
4070
- if s7.empty?
4071
- @index = i7
4072
- r7 = nil
4073
- else
4074
- r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
4075
- end
4076
- s6 << r7
4077
- if r7
4078
- if has_terminal?('=', false, index)
4079
- r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
4080
- @index += 1
4081
- else
4082
- terminal_parse_failure('=')
4083
- r9 = nil
4084
- end
4085
- s6 << r9
4086
- if r9
4087
- r10 = _nt_dimension
4088
- s6 << r10
4089
- end
4090
- end
4091
- if s6.last
4092
- r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
4093
- r6.extend(Argument3)
4094
- r6.extend(Argument4)
4095
- else
4096
- @index = i6
4097
- r6 = nil
4098
- end
4099
- if r6
4100
- r0 = r6
4101
- else
4102
- s11, i11 = [], index
4103
- loop do
4104
- if has_terminal?('\G[-a-zA-Z0-9_%$/.&=:;#+?]', true, index)
4105
- r12 = instantiate_node(SyntaxNode,input, index...(index + 1))
4106
- @index += 1
4107
- else
4108
- r12 = nil
4109
- end
4110
- if r12
4111
- s11 << r12
4112
- else
4113
- break
4114
- end
4115
- end
4116
- if s11.empty?
4117
- @index = i11
4118
- r11 = nil
4119
- else
4120
- r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
4121
- r11.extend(Argument5)
4122
- end
4123
- if r11
4124
- r0 = r11
4125
- else
4126
- r13 = _nt_function
4127
- if r13
4128
- r0 = r13
4129
- else
4130
- i14, s14 = index, []
4131
- r15 = _nt_keyword
4132
- s14 << r15
4133
- if r15
4134
- s16, i16 = [], index
4135
- loop do
4136
- i17, s17 = index, []
4137
- r18 = _nt_S
4138
- s17 << r18
4139
- if r18
4140
- r19 = _nt_keyword
4141
- s17 << r19
4142
- end
4143
- if s17.last
4144
- r17 = instantiate_node(SyntaxNode,input, i17...index, s17)
4145
- r17.extend(Argument6)
4146
- else
4147
- @index = i17
4148
- r17 = nil
4149
- end
4150
- if r17
4151
- s16 << r17
4152
- else
4153
- break
4154
- end
4155
- end
4156
- r16 = instantiate_node(SyntaxNode,input, i16...index, s16)
4157
- s14 << r16
4158
- end
4159
- if s14.last
4160
- r14 = instantiate_node(SyntaxNode,input, i14...index, s14)
4161
- r14.extend(Argument7)
4162
- r14.extend(Argument8)
4163
- else
4164
- @index = i14
4165
- r14 = nil
4166
- end
4167
- if r14
4168
- r0 = r14
4169
- else
4170
- @index = i0
4171
- r0 = nil
4172
- end
4173
- end
4174
- end
4175
- end
4176
- end
4177
- end
4178
- end
4179
-
4180
- node_cache[:argument][start_index] = r0
4181
-
4182
- r0
4183
- end
4184
-
4185
- def _nt_s
4186
- start_index = index
4187
- if node_cache[:s].has_key?(index)
4188
- cached = node_cache[:s][index]
4189
- @index = cached.interval.end if cached
4190
- return cached
4191
- end
4192
-
4193
- s0, i0 = [], index
4194
- loop do
4195
- if has_terminal?('\G[ ]', true, index)
4196
- r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
4197
- @index += 1
4198
- else
4199
- r1 = nil
4200
- end
4201
- if r1
4202
- s0 << r1
4203
- else
4204
- break
4205
- end
4206
- end
4207
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4208
-
4209
- node_cache[:s][start_index] = r0
4210
-
4211
- r0
4212
- end
4213
-
4214
- def _nt_S
4215
- start_index = index
4216
- if node_cache[:S].has_key?(index)
4217
- cached = node_cache[:S][index]
4218
- @index = cached.interval.end if cached
4219
- return cached
4220
- end
4221
-
4222
- s0, i0 = [], index
4223
- loop do
4224
- if has_terminal?('\G[ ]', true, index)
4225
- r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
4226
- @index += 1
4227
- else
4228
- r1 = nil
4229
- end
4230
- if r1
4231
- s0 << r1
4232
- else
4233
- break
4234
- end
4235
- end
4236
- if s0.empty?
4237
- @index = i0
4238
- r0 = nil
4239
- else
4240
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4241
- end
4242
-
4243
- node_cache[:S][start_index] = r0
4244
-
4245
- r0
4246
- end
4247
-
4248
- def _nt_ws
4249
- start_index = index
4250
- if node_cache[:ws].has_key?(index)
4251
- cached = node_cache[:ws][index]
4252
- @index = cached.interval.end if cached
4253
- return cached
4254
- end
4255
-
4256
- s0, i0 = [], index
4257
- loop do
4258
- if has_terminal?('\G[\\n ]', true, index)
4259
- r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
4260
- @index += 1
4261
- else
4262
- r1 = nil
4263
- end
4264
- if r1
4265
- s0 << r1
4266
- else
4267
- break
4268
- end
4269
- end
4270
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4271
-
4272
- node_cache[:ws][start_index] = r0
4273
-
4274
- r0
4275
- end
4276
-
4277
- def _nt_WS
4278
- start_index = index
4279
- if node_cache[:WS].has_key?(index)
4280
- cached = node_cache[:WS][index]
4281
- @index = cached.interval.end if cached
4282
- return cached
4283
- end
4284
-
4285
- s0, i0 = [], index
4286
- loop do
4287
- if has_terminal?('\G[\\n ]', true, index)
4288
- r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
4289
- @index += 1
4290
- else
4291
- r1 = nil
4292
- end
4293
- if r1
4294
- s0 << r1
4295
- else
4296
- break
4297
- end
4298
- end
4299
- if s0.empty?
4300
- @index = i0
4301
- r0 = nil
4302
- else
4303
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4304
- end
4305
-
4306
- node_cache[:WS][start_index] = r0
4307
-
4308
- r0
4309
- end
4310
-
4311
- module Ns0
4312
- end
4313
-
4314
- def _nt_ns
4315
- start_index = index
4316
- if node_cache[:ns].has_key?(index)
4317
- cached = node_cache[:ns][index]
4318
- @index = cached.interval.end if cached
4319
- return cached
4320
- end
4321
-
4322
- i0, s0 = index, []
4323
- i1 = index
4324
- if has_terminal?('\G[ ;\\n]', true, index)
4325
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
4326
- @index += 1
4327
- else
4328
- r2 = nil
4329
- end
4330
- if r2
4331
- r1 = nil
4332
- else
4333
- @index = i1
4334
- r1 = instantiate_node(SyntaxNode,input, index...index)
4335
- end
4336
- s0 << r1
4337
- if r1
4338
- if index < input_length
4339
- r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
4340
- @index += 1
4341
- else
4342
- terminal_parse_failure("any character")
4343
- r3 = nil
4344
- end
4345
- s0 << r3
4346
- end
4347
- if s0.last
4348
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4349
- r0.extend(Ns0)
4350
- else
4351
- @index = i0
4352
- r0 = nil
4353
- end
4354
-
4355
- node_cache[:ns][start_index] = r0
4356
-
4357
- r0
4358
- end
4359
-
4360
- end
4361
-
4362
- class LessParser < Treetop::Runtime::CompiledParser
4363
- include Less
4364
- end
4365
-