# File lib/treetop/compiler/metagrammar.rb, line 3243
3243: def _nt_alpha_char
3244: start_index = index
3245: if node_cache[:alpha_char].has_key?(index)
3246: cached = node_cache[:alpha_char][index]
3247: if cached
3248: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3249: @index = cached.interval.end
3250: end
3251: return cached
3252: end
3253:
3254: if has_terminal?('\G[A-Za-z_]', true, index)
3255: r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
3256: @index += 1
3257: else
3258: r0 = nil
3259: end
3260:
3261: node_cache[:alpha_char][start_index] = r0
3262:
3263: r0
3264: end
# File lib/treetop/compiler/metagrammar.rb, line 3266
3266: def _nt_alphanumeric_char
3267: start_index = index
3268: if node_cache[:alphanumeric_char].has_key?(index)
3269: cached = node_cache[:alphanumeric_char][index]
3270: if cached
3271: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3272: @index = cached.interval.end
3273: end
3274: return cached
3275: end
3276:
3277: i0 = index
3278: r1 = _nt_alpha_char
3279: if r1
3280: r0 = r1
3281: else
3282: if has_terminal?('\G[0-9]', true, index)
3283: r2 = true
3284: @index += 1
3285: else
3286: r2 = nil
3287: end
3288: if r2
3289: r0 = r2
3290: else
3291: @index = i0
3292: r0 = nil
3293: end
3294: end
3295:
3296: node_cache[:alphanumeric_char][start_index] = r0
3297:
3298: r0
3299: end
# File lib/treetop/compiler/metagrammar.rb, line 1158
1158: def _nt_alternative
1159: start_index = index
1160: if node_cache[:alternative].has_key?(index)
1161: cached = node_cache[:alternative][index]
1162: if cached
1163: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1164: @index = cached.interval.end
1165: end
1166: return cached
1167: end
1168:
1169: i0 = index
1170: r1 = _nt_sequence
1171: if r1
1172: r0 = r1
1173: else
1174: r2 = _nt_primary
1175: if r2
1176: r0 = r2
1177: else
1178: @index = i0
1179: r0 = nil
1180: end
1181: end
1182:
1183: node_cache[:alternative][start_index] = r0
1184:
1185: r0
1186: end
# File lib/treetop/compiler/metagrammar.rb, line 2735
2735: def _nt_anything_symbol
2736: start_index = index
2737: if node_cache[:anything_symbol].has_key?(index)
2738: cached = node_cache[:anything_symbol][index]
2739: if cached
2740: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2741: @index = cached.interval.end
2742: end
2743: return cached
2744: end
2745:
2746: if has_terminal?('.', false, index)
2747: r0 = instantiate_node(AnythingSymbol,input, index...(index + 1))
2748: @index += 1
2749: else
2750: terminal_parse_failure('.')
2751: r0 = nil
2752: end
2753:
2754: node_cache[:anything_symbol][start_index] = r0
2755:
2756: r0
2757: end
# File lib/treetop/compiler/metagrammar.rb, line 2045
2045: def _nt_atomic
2046: start_index = index
2047: if node_cache[:atomic].has_key?(index)
2048: cached = node_cache[:atomic][index]
2049: if cached
2050: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2051: @index = cached.interval.end
2052: end
2053: return cached
2054: end
2055:
2056: i0 = index
2057: r1 = _nt_terminal
2058: if r1
2059: r0 = r1
2060: else
2061: r2 = _nt_nonterminal
2062: if r2
2063: r0 = r2
2064: else
2065: r3 = _nt_parenthesized_expression
2066: if r3
2067: r0 = r3
2068: else
2069: @index = i0
2070: r0 = nil
2071: end
2072: end
2073: end
2074:
2075: node_cache[:atomic][start_index] = r0
2076:
2077: r0
2078: end
# File lib/treetop/compiler/metagrammar.rb, line 2578
2578: def _nt_character_class
2579: start_index = index
2580: if node_cache[:character_class].has_key?(index)
2581: cached = node_cache[:character_class][index]
2582: if cached
2583: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2584: @index = cached.interval.end
2585: end
2586: return cached
2587: end
2588:
2589: i0, s0 = index, []
2590: if has_terminal?('[', false, index)
2591: r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
2592: @index += 1
2593: else
2594: terminal_parse_failure('[')
2595: r1 = nil
2596: end
2597: s0 << r1
2598: if r1
2599: s2, i2 = [], index
2600: loop do
2601: i3, s3 = index, []
2602: i4 = index
2603: if has_terminal?(']', false, index)
2604: r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
2605: @index += 1
2606: else
2607: terminal_parse_failure(']')
2608: r5 = nil
2609: end
2610: if r5
2611: r4 = nil
2612: else
2613: @index = i4
2614: r4 = instantiate_node(SyntaxNode,input, index...index)
2615: end
2616: s3 << r4
2617: if r4
2618: i6 = index
2619: i7, s7 = index, []
2620: if has_terminal?('\', false, index)
2621: r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
2622: @index += 1
2623: else
2624: terminal_parse_failure('\')
2625: r8 = nil
2626: end
2627: s7 << r8
2628: if r8
2629: if index < input_length
2630: r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
2631: @index += 1
2632: else
2633: terminal_parse_failure("any character")
2634: r9 = nil
2635: end
2636: s7 << r9
2637: end
2638: if s7.last
2639: r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
2640: r7.extend(CharacterClass0)
2641: else
2642: @index = i7
2643: r7 = nil
2644: end
2645: if r7
2646: r6 = r7
2647: else
2648: i10, s10 = index, []
2649: i11 = index
2650: if has_terminal?('\', false, index)
2651: r12 = instantiate_node(SyntaxNode,input, index...(index + 1))
2652: @index += 1
2653: else
2654: terminal_parse_failure('\')
2655: r12 = nil
2656: end
2657: if r12
2658: r11 = nil
2659: else
2660: @index = i11
2661: r11 = instantiate_node(SyntaxNode,input, index...index)
2662: end
2663: s10 << r11
2664: if r11
2665: if index < input_length
2666: r13 = instantiate_node(SyntaxNode,input, index...(index + 1))
2667: @index += 1
2668: else
2669: terminal_parse_failure("any character")
2670: r13 = nil
2671: end
2672: s10 << r13
2673: end
2674: if s10.last
2675: r10 = instantiate_node(SyntaxNode,input, i10...index, s10)
2676: r10.extend(CharacterClass1)
2677: else
2678: @index = i10
2679: r10 = nil
2680: end
2681: if r10
2682: r6 = r10
2683: else
2684: @index = i6
2685: r6 = nil
2686: end
2687: end
2688: s3 << r6
2689: end
2690: if s3.last
2691: r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
2692: r3.extend(CharacterClass2)
2693: else
2694: @index = i3
2695: r3 = nil
2696: end
2697: if r3
2698: s2 << r3
2699: else
2700: break
2701: end
2702: end
2703: if s2.empty?
2704: @index = i2
2705: r2 = nil
2706: else
2707: r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
2708: end
2709: s0 << r2
2710: if r2
2711: if has_terminal?(']', false, index)
2712: r14 = instantiate_node(SyntaxNode,input, index...(index + 1))
2713: @index += 1
2714: else
2715: terminal_parse_failure(']')
2716: r14 = nil
2717: end
2718: s0 << r14
2719: end
2720: end
2721: if s0.last
2722: r0 = instantiate_node(CharacterClass,input, i0...index, s0)
2723: r0.extend(CharacterClass3)
2724: r0.extend(CharacterClass4)
2725: else
2726: @index = i0
2727: r0 = nil
2728: end
2729:
2730: node_cache[:character_class][start_index] = r0
2731:
2732: r0
2733: end
# File lib/treetop/compiler/metagrammar.rb, line 968
968: def _nt_choice
969: start_index = index
970: if node_cache[:choice].has_key?(index)
971: cached = node_cache[:choice][index]
972: if cached
973: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
974: @index = cached.interval.end
975: end
976: return cached
977: end
978:
979: i0, s0 = index, []
980: r1 = _nt_alternative
981: s0 << r1
982: if r1
983: s2, i2 = [], index
984: loop do
985: i3, s3 = index, []
986: r5 = _nt_space
987: if r5
988: r4 = r5
989: else
990: r4 = instantiate_node(SyntaxNode,input, index...index)
991: end
992: s3 << r4
993: if r4
994: if has_terminal?('/', false, index)
995: r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
996: @index += 1
997: else
998: terminal_parse_failure('/')
999: r6 = nil
1000: end
1001: s3 << r6
1002: if r6
1003: r8 = _nt_space
1004: if r8
1005: r7 = r8
1006: else
1007: r7 = instantiate_node(SyntaxNode,input, index...index)
1008: end
1009: s3 << r7
1010: if r7
1011: r9 = _nt_alternative
1012: s3 << r9
1013: end
1014: end
1015: end
1016: if s3.last
1017: r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
1018: r3.extend(Choice0)
1019: else
1020: @index = i3
1021: r3 = nil
1022: end
1023: if r3
1024: s2 << r3
1025: else
1026: break
1027: end
1028: end
1029: if s2.empty?
1030: @index = i2
1031: r2 = nil
1032: else
1033: r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1034: end
1035: s0 << r2
1036: end
1037: if s0.last
1038: r0 = instantiate_node(Choice,input, i0...index, s0)
1039: r0.extend(Choice1)
1040: r0.extend(Choice2)
1041: else
1042: @index = i0
1043: r0 = nil
1044: end
1045:
1046: node_cache[:choice][start_index] = r0
1047:
1048: r0
1049: end
# File lib/treetop/compiler/metagrammar.rb, line 3351
3351: def _nt_comment_to_eol
3352: start_index = index
3353: if node_cache[:comment_to_eol].has_key?(index)
3354: cached = node_cache[:comment_to_eol][index]
3355: if cached
3356: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3357: @index = cached.interval.end
3358: end
3359: return cached
3360: end
3361:
3362: i0, s0 = index, []
3363: if has_terminal?('#', false, index)
3364: r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
3365: @index += 1
3366: else
3367: terminal_parse_failure('#')
3368: r1 = nil
3369: end
3370: s0 << r1
3371: if r1
3372: s2, i2 = [], index
3373: loop do
3374: i3, s3 = index, []
3375: i4 = index
3376: if has_terminal?("\n", false, index)
3377: r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
3378: @index += 1
3379: else
3380: terminal_parse_failure("\n")
3381: r5 = nil
3382: end
3383: if r5
3384: r4 = nil
3385: else
3386: @index = i4
3387: r4 = instantiate_node(SyntaxNode,input, index...index)
3388: end
3389: s3 << r4
3390: if r4
3391: if index < input_length
3392: r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
3393: @index += 1
3394: else
3395: terminal_parse_failure("any character")
3396: r6 = nil
3397: end
3398: s3 << r6
3399: end
3400: if s3.last
3401: r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
3402: r3.extend(CommentToEol0)
3403: else
3404: @index = i3
3405: r3 = nil
3406: end
3407: if r3
3408: s2 << r3
3409: else
3410: break
3411: end
3412: end
3413: r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3414: s0 << r2
3415: end
3416: if s0.last
3417: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3418: r0.extend(CommentToEol1)
3419: else
3420: @index = i0
3421: r0 = nil
3422: end
3423:
3424: node_cache[:comment_to_eol][start_index] = r0
3425:
3426: r0
3427: end
# File lib/treetop/compiler/metagrammar.rb, line 662
662: def _nt_declaration
663: start_index = index
664: if node_cache[:declaration].has_key?(index)
665: cached = node_cache[:declaration][index]
666: if cached
667: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
668: @index = cached.interval.end
669: end
670: return cached
671: end
672:
673: i0 = index
674: r1 = _nt_parsing_rule
675: if r1
676: r0 = r1
677: else
678: r2 = _nt_include_declaration
679: if r2
680: r0 = r2
681: else
682: @index = i0
683: r0 = nil
684: end
685: end
686:
687: node_cache[:declaration][start_index] = r0
688:
689: r0
690: end
# File lib/treetop/compiler/metagrammar.rb, line 589
589: def _nt_declaration_sequence
590: start_index = index
591: if node_cache[:declaration_sequence].has_key?(index)
592: cached = node_cache[:declaration_sequence][index]
593: if cached
594: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
595: @index = cached.interval.end
596: end
597: return cached
598: end
599:
600: i0 = index
601: i1, s1 = index, []
602: r2 = _nt_declaration
603: s1 << r2
604: if r2
605: s3, i3 = [], index
606: loop do
607: i4, s4 = index, []
608: r5 = _nt_space
609: s4 << r5
610: if r5
611: r6 = _nt_declaration
612: s4 << r6
613: end
614: if s4.last
615: r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
616: r4.extend(DeclarationSequence0)
617: else
618: @index = i4
619: r4 = nil
620: end
621: if r4
622: s3 << r4
623: else
624: break
625: end
626: end
627: r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
628: s1 << r3
629: end
630: if s1.last
631: r1 = instantiate_node(DeclarationSequence,input, i1...index, s1)
632: r1.extend(DeclarationSequence1)
633: r1.extend(DeclarationSequence2)
634: else
635: @index = i1
636: r1 = nil
637: end
638: if r1
639: r0 = r1
640: else
641: if has_terminal?('', false, index)
642: r7 = instantiate_node(SyntaxNode,input, index...(index + 0))
643: r7.extend(DeclarationSequence3)
644: @index += 0
645: else
646: terminal_parse_failure('')
647: r7 = nil
648: end
649: if r7
650: r0 = r7
651: else
652: @index = i0
653: r0 = nil
654: end
655: end
656:
657: node_cache[:declaration_sequence][start_index] = r0
658:
659: r0
660: end
# File lib/treetop/compiler/metagrammar.rb, line 2312
2312: def _nt_double_quoted_string
2313: start_index = index
2314: if node_cache[:double_quoted_string].has_key?(index)
2315: cached = node_cache[:double_quoted_string][index]
2316: if cached
2317: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2318: @index = cached.interval.end
2319: end
2320: return cached
2321: end
2322:
2323: i0, s0 = index, []
2324: if has_terminal?('"', false, index)
2325: r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
2326: @index += 1
2327: else
2328: terminal_parse_failure('"')
2329: r1 = nil
2330: end
2331: s0 << r1
2332: if r1
2333: s2, i2 = [], index
2334: loop do
2335: i3, s3 = index, []
2336: i4 = index
2337: if has_terminal?('"', false, index)
2338: r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
2339: @index += 1
2340: else
2341: terminal_parse_failure('"')
2342: r5 = nil
2343: end
2344: if r5
2345: r4 = nil
2346: else
2347: @index = i4
2348: r4 = instantiate_node(SyntaxNode,input, index...index)
2349: end
2350: s3 << r4
2351: if r4
2352: i6 = index
2353: if has_terminal?("\\\\", false, index)
2354: r7 = instantiate_node(SyntaxNode,input, index...(index + 2))
2355: @index += 2
2356: else
2357: terminal_parse_failure("\\\\")
2358: r7 = nil
2359: end
2360: if r7
2361: r6 = r7
2362: else
2363: if has_terminal?('\"', false, index)
2364: r8 = instantiate_node(SyntaxNode,input, index...(index + 2))
2365: @index += 2
2366: else
2367: terminal_parse_failure('\"')
2368: r8 = nil
2369: end
2370: if r8
2371: r6 = r8
2372: else
2373: if index < input_length
2374: r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
2375: @index += 1
2376: else
2377: terminal_parse_failure("any character")
2378: r9 = nil
2379: end
2380: if r9
2381: r6 = r9
2382: else
2383: @index = i6
2384: r6 = nil
2385: end
2386: end
2387: end
2388: s3 << r6
2389: end
2390: if s3.last
2391: r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
2392: r3.extend(DoubleQuotedString0)
2393: else
2394: @index = i3
2395: r3 = nil
2396: end
2397: if r3
2398: s2 << r3
2399: else
2400: break
2401: end
2402: end
2403: r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
2404: s0 << r2
2405: if r2
2406: if has_terminal?('"', false, index)
2407: r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
2408: @index += 1
2409: else
2410: terminal_parse_failure('"')
2411: r10 = nil
2412: end
2413: s0 << r10
2414: end
2415: end
2416: if s0.last
2417: r0 = instantiate_node(Terminal,input, i0...index, s0)
2418: r0.extend(DoubleQuotedString1)
2419: else
2420: @index = i0
2421: r0 = nil
2422: end
2423:
2424: node_cache[:double_quoted_string][start_index] = r0
2425:
2426: r0
2427: end
# File lib/treetop/compiler/metagrammar.rb, line 410
410: def _nt_grammar
411: start_index = index
412: if node_cache[:grammar].has_key?(index)
413: cached = node_cache[:grammar][index]
414: if cached
415: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
416: @index = cached.interval.end
417: end
418: return cached
419: end
420:
421: i0, s0 = index, []
422: if has_terminal?('grammar', false, index)
423: r1 = instantiate_node(SyntaxNode,input, index...(index + 7))
424: @index += 7
425: else
426: terminal_parse_failure('grammar')
427: r1 = nil
428: end
429: s0 << r1
430: if r1
431: r2 = _nt_space
432: s0 << r2
433: if r2
434: r3 = _nt_grammar_name
435: s0 << r3
436: if r3
437: r4 = _nt_space
438: s0 << r4
439: if r4
440: i6, s6 = index, []
441: if has_terminal?('do', false, index)
442: r7 = instantiate_node(SyntaxNode,input, index...(index + 2))
443: @index += 2
444: else
445: terminal_parse_failure('do')
446: r7 = nil
447: end
448: s6 << r7
449: if r7
450: r8 = _nt_space
451: s6 << r8
452: end
453: if s6.last
454: r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
455: r6.extend(Grammar0)
456: else
457: @index = i6
458: r6 = nil
459: end
460: if r6
461: r5 = r6
462: else
463: r5 = instantiate_node(SyntaxNode,input, index...index)
464: end
465: s0 << r5
466: if r5
467: r9 = _nt_declaration_sequence
468: s0 << r9
469: if r9
470: r11 = _nt_space
471: if r11
472: r10 = r11
473: else
474: r10 = instantiate_node(SyntaxNode,input, index...index)
475: end
476: s0 << r10
477: if r10
478: if has_terminal?('end', false, index)
479: r12 = instantiate_node(SyntaxNode,input, index...(index + 3))
480: @index += 3
481: else
482: terminal_parse_failure('end')
483: r12 = nil
484: end
485: s0 << r12
486: end
487: end
488: end
489: end
490: end
491: end
492: end
493: if s0.last
494: r0 = instantiate_node(Grammar,input, i0...index, s0)
495: r0.extend(Grammar1)
496: else
497: @index = i0
498: r0 = nil
499: end
500:
501: node_cache[:grammar][start_index] = r0
502:
503: r0
504: end
# File lib/treetop/compiler/metagrammar.rb, line 509
509: def _nt_grammar_name
510: start_index = index
511: if node_cache[:grammar_name].has_key?(index)
512: cached = node_cache[:grammar_name][index]
513: if cached
514: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
515: @index = cached.interval.end
516: end
517: return cached
518: end
519:
520: i0, s0 = index, []
521: if has_terminal?('\G[A-Z]', true, index)
522: r1 = true
523: @index += 1
524: else
525: r1 = nil
526: end
527: s0 << r1
528: if r1
529: s2, i2 = [], index
530: loop do
531: r3 = _nt_alphanumeric_char
532: if r3
533: s2 << r3
534: else
535: break
536: end
537: end
538: r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
539: s0 << r2
540: end
541: if s0.last
542: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
543: r0.extend(GrammarName0)
544: else
545: @index = i0
546: r0 = nil
547: end
548:
549: node_cache[:grammar_name][start_index] = r0
550:
551: r0
552: end
# File lib/treetop/compiler/metagrammar.rb, line 705
705: def _nt_include_declaration
706: start_index = index
707: if node_cache[:include_declaration].has_key?(index)
708: cached = node_cache[:include_declaration][index]
709: if cached
710: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
711: @index = cached.interval.end
712: end
713: return cached
714: end
715:
716: i0, s0 = index, []
717: if has_terminal?('include', false, index)
718: r1 = instantiate_node(SyntaxNode,input, index...(index + 7))
719: @index += 7
720: else
721: terminal_parse_failure('include')
722: r1 = nil
723: end
724: s0 << r1
725: if r1
726: r2 = _nt_space
727: s0 << r2
728: if r2
729: if has_terminal?('\G[A-Z]', true, index)
730: r3 = true
731: @index += 1
732: else
733: r3 = nil
734: end
735: s0 << r3
736: if r3
737: s4, i4 = [], index
738: loop do
739: i5 = index
740: r6 = _nt_alphanumeric_char
741: if r6
742: r5 = r6
743: else
744: if has_terminal?('::', false, index)
745: r7 = instantiate_node(SyntaxNode,input, index...(index + 2))
746: @index += 2
747: else
748: terminal_parse_failure('::')
749: r7 = nil
750: end
751: if r7
752: r5 = r7
753: else
754: @index = i5
755: r5 = nil
756: end
757: end
758: if r5
759: s4 << r5
760: else
761: break
762: end
763: end
764: r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
765: s0 << r4
766: end
767: end
768: end
769: if s0.last
770: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
771: r0.extend(IncludeDeclaration0)
772: r0.extend(IncludeDeclaration1)
773: else
774: @index = i0
775: r0 = nil
776: end
777:
778: node_cache[:include_declaration][start_index] = r0
779:
780: r0
781: end
# File lib/treetop/compiler/metagrammar.rb, line 3032
3032: def _nt_inline_module
3033: start_index = index
3034: if node_cache[:inline_module].has_key?(index)
3035: cached = node_cache[:inline_module][index]
3036: if cached
3037: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3038: @index = cached.interval.end
3039: end
3040: return cached
3041: end
3042:
3043: i0, s0 = index, []
3044: if has_terminal?('{', false, index)
3045: r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
3046: @index += 1
3047: else
3048: terminal_parse_failure('{')
3049: r1 = nil
3050: end
3051: s0 << r1
3052: if r1
3053: s2, i2 = [], index
3054: loop do
3055: i3 = index
3056: r4 = _nt_inline_module
3057: if r4
3058: r3 = r4
3059: else
3060: i5, s5 = index, []
3061: i6 = index
3062: if has_terminal?('\G[{}]', true, index)
3063: r7 = true
3064: @index += 1
3065: else
3066: r7 = nil
3067: end
3068: if r7
3069: r6 = nil
3070: else
3071: @index = i6
3072: r6 = instantiate_node(SyntaxNode,input, index...index)
3073: end
3074: s5 << r6
3075: if r6
3076: if index < input_length
3077: r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
3078: @index += 1
3079: else
3080: terminal_parse_failure("any character")
3081: r8 = nil
3082: end
3083: s5 << r8
3084: end
3085: if s5.last
3086: r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
3087: r5.extend(InlineModule0)
3088: else
3089: @index = i5
3090: r5 = nil
3091: end
3092: if r5
3093: r3 = r5
3094: else
3095: @index = i3
3096: r3 = nil
3097: end
3098: end
3099: if r3
3100: s2 << r3
3101: else
3102: break
3103: end
3104: end
3105: r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3106: s0 << r2
3107: if r2
3108: if has_terminal?('}', false, index)
3109: r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
3110: @index += 1
3111: else
3112: terminal_parse_failure('}')
3113: r9 = nil
3114: end
3115: s0 << r9
3116: end
3117: end
3118: if s0.last
3119: r0 = instantiate_node(InlineModule,input, i0...index, s0)
3120: r0.extend(InlineModule1)
3121: else
3122: @index = i0
3123: r0 = nil
3124: end
3125:
3126: node_cache[:inline_module][start_index] = r0
3127:
3128: r0
3129: end
# File lib/treetop/compiler/metagrammar.rb, line 3134
3134: def _nt_keyword_inside_grammar
3135: start_index = index
3136: if node_cache[:keyword_inside_grammar].has_key?(index)
3137: cached = node_cache[:keyword_inside_grammar][index]
3138: if cached
3139: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3140: @index = cached.interval.end
3141: end
3142: return cached
3143: end
3144:
3145: i0, s0 = index, []
3146: i1 = index
3147: if has_terminal?('rule', false, index)
3148: r2 = instantiate_node(SyntaxNode,input, index...(index + 4))
3149: @index += 4
3150: else
3151: terminal_parse_failure('rule')
3152: r2 = nil
3153: end
3154: if r2
3155: r1 = r2
3156: else
3157: if has_terminal?('end', false, index)
3158: r3 = instantiate_node(SyntaxNode,input, index...(index + 3))
3159: @index += 3
3160: else
3161: terminal_parse_failure('end')
3162: r3 = nil
3163: end
3164: if r3
3165: r1 = r3
3166: else
3167: @index = i1
3168: r1 = nil
3169: end
3170: end
3171: s0 << r1
3172: if r1
3173: i4 = index
3174: r5 = _nt_non_space_char
3175: if r5
3176: r4 = nil
3177: else
3178: @index = i4
3179: r4 = instantiate_node(SyntaxNode,input, index...index)
3180: end
3181: s0 << r4
3182: end
3183: if s0.last
3184: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3185: r0.extend(KeywordInsideGrammar0)
3186: else
3187: @index = i0
3188: r0 = nil
3189: end
3190:
3191: node_cache[:keyword_inside_grammar][start_index] = r0
3192:
3193: r0
3194: end
# File lib/treetop/compiler/metagrammar.rb, line 1495
1495: def _nt_label
1496: start_index = index
1497: if node_cache[:label].has_key?(index)
1498: cached = node_cache[:label][index]
1499: if cached
1500: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1501: @index = cached.interval.end
1502: end
1503: return cached
1504: end
1505:
1506: i0 = index
1507: i1, s1 = index, []
1508: i2, s2 = index, []
1509: r3 = _nt_alpha_char
1510: s2 << r3
1511: if r3
1512: s4, i4 = [], index
1513: loop do
1514: r5 = _nt_alphanumeric_char
1515: if r5
1516: s4 << r5
1517: else
1518: break
1519: end
1520: end
1521: r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
1522: s2 << r4
1523: end
1524: if s2.last
1525: r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1526: r2.extend(Label0)
1527: else
1528: @index = i2
1529: r2 = nil
1530: end
1531: s1 << r2
1532: if r2
1533: if has_terminal?(':', false, index)
1534: r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
1535: @index += 1
1536: else
1537: terminal_parse_failure(':')
1538: r6 = nil
1539: end
1540: s1 << r6
1541: end
1542: if s1.last
1543: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1544: r1.extend(Label1)
1545: r1.extend(Label2)
1546: else
1547: @index = i1
1548: r1 = nil
1549: end
1550: if r1
1551: r0 = r1
1552: else
1553: if has_terminal?('', false, index)
1554: r7 = instantiate_node(SyntaxNode,input, index...(index + 0))
1555: r7.extend(Label3)
1556: @index += 0
1557: else
1558: terminal_parse_failure('')
1559: r7 = nil
1560: end
1561: if r7
1562: r0 = r7
1563: else
1564: @index = i0
1565: r0 = nil
1566: end
1567: end
1568:
1569: node_cache[:label][start_index] = r0
1570:
1571: r0
1572: end
# File lib/treetop/compiler/metagrammar.rb, line 1441
1441: def _nt_labeled_sequence_primary
1442: start_index = index
1443: if node_cache[:labeled_sequence_primary].has_key?(index)
1444: cached = node_cache[:labeled_sequence_primary][index]
1445: if cached
1446: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1447: @index = cached.interval.end
1448: end
1449: return cached
1450: end
1451:
1452: i0, s0 = index, []
1453: r1 = _nt_label
1454: s0 << r1
1455: if r1
1456: r2 = _nt_sequence_primary
1457: s0 << r2
1458: end
1459: if s0.last
1460: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1461: r0.extend(LabeledSequencePrimary0)
1462: r0.extend(LabeledSequencePrimary1)
1463: else
1464: @index = i0
1465: r0 = nil
1466: end
1467:
1468: node_cache[:labeled_sequence_primary][start_index] = r0
1469:
1470: r0
1471: end
# File lib/treetop/compiler/metagrammar.rb, line 273
273: def _nt_module_declaration
274: start_index = index
275: if node_cache[:module_declaration].has_key?(index)
276: cached = node_cache[:module_declaration][index]
277: if cached
278: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
279: @index = cached.interval.end
280: end
281: return cached
282: end
283:
284: i0, s0 = index, []
285: i1, s1 = index, []
286: if has_terminal?('module', false, index)
287: r2 = instantiate_node(SyntaxNode,input, index...(index + 6))
288: @index += 6
289: else
290: terminal_parse_failure('module')
291: r2 = nil
292: end
293: s1 << r2
294: if r2
295: r3 = _nt_space
296: s1 << r3
297: if r3
298: if has_terminal?('\G[A-Z]', true, index)
299: r4 = true
300: @index += 1
301: else
302: r4 = nil
303: end
304: s1 << r4
305: if r4
306: s5, i5 = [], index
307: loop do
308: r6 = _nt_alphanumeric_char
309: if r6
310: s5 << r6
311: else
312: break
313: end
314: end
315: r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
316: s1 << r5
317: if r5
318: r7 = _nt_space
319: s1 << r7
320: end
321: end
322: end
323: end
324: if s1.last
325: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
326: r1.extend(ModuleDeclaration0)
327: else
328: @index = i1
329: r1 = nil
330: end
331: s0 << r1
332: if r1
333: i8 = index
334: r9 = _nt_module_declaration
335: if r9
336: r8 = r9
337: else
338: r10 = _nt_grammar
339: if r10
340: r8 = r10
341: else
342: @index = i8
343: r8 = nil
344: end
345: end
346: s0 << r8
347: if r8
348: i11, s11 = index, []
349: r12 = _nt_space
350: s11 << r12
351: if r12
352: if has_terminal?('end', false, index)
353: r13 = instantiate_node(SyntaxNode,input, index...(index + 3))
354: @index += 3
355: else
356: terminal_parse_failure('end')
357: r13 = nil
358: end
359: s11 << r13
360: end
361: if s11.last
362: r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
363: r11.extend(ModuleDeclaration1)
364: else
365: @index = i11
366: r11 = nil
367: end
368: s0 << r11
369: end
370: end
371: if s0.last
372: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
373: r0.extend(ModuleDeclaration2)
374: r0.extend(ModuleDeclaration3)
375: else
376: @index = i0
377: r0 = nil
378: end
379:
380: node_cache[:module_declaration][start_index] = r0
381:
382: r0
383: end
# File lib/treetop/compiler/metagrammar.rb, line 1825
1825: def _nt_node_class_declarations
1826: start_index = index
1827: if node_cache[:node_class_declarations].has_key?(index)
1828: cached = node_cache[:node_class_declarations][index]
1829: if cached
1830: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1831: @index = cached.interval.end
1832: end
1833: return cached
1834: end
1835:
1836: i0, s0 = index, []
1837: r1 = _nt_node_class_expression
1838: s0 << r1
1839: if r1
1840: r2 = _nt_trailing_inline_module
1841: s0 << r2
1842: end
1843: if s0.last
1844: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1845: r0.extend(NodeClassDeclarations0)
1846: r0.extend(NodeClassDeclarations1)
1847: else
1848: @index = i0
1849: r0 = nil
1850: end
1851:
1852: node_cache[:node_class_declarations][start_index] = r0
1853:
1854: r0
1855: end
# File lib/treetop/compiler/metagrammar.rb, line 2781
2781: def _nt_node_class_expression
2782: start_index = index
2783: if node_cache[:node_class_expression].has_key?(index)
2784: cached = node_cache[:node_class_expression][index]
2785: if cached
2786: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2787: @index = cached.interval.end
2788: end
2789: return cached
2790: end
2791:
2792: i0 = index
2793: i1, s1 = index, []
2794: r2 = _nt_space
2795: s1 << r2
2796: if r2
2797: if has_terminal?('<', false, index)
2798: r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
2799: @index += 1
2800: else
2801: terminal_parse_failure('<')
2802: r3 = nil
2803: end
2804: s1 << r3
2805: if r3
2806: s4, i4 = [], index
2807: loop do
2808: i5, s5 = index, []
2809: i6 = index
2810: if has_terminal?('>', false, index)
2811: r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
2812: @index += 1
2813: else
2814: terminal_parse_failure('>')
2815: r7 = nil
2816: end
2817: if r7
2818: r6 = nil
2819: else
2820: @index = i6
2821: r6 = instantiate_node(SyntaxNode,input, index...index)
2822: end
2823: s5 << r6
2824: if r6
2825: if index < input_length
2826: r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
2827: @index += 1
2828: else
2829: terminal_parse_failure("any character")
2830: r8 = nil
2831: end
2832: s5 << r8
2833: end
2834: if s5.last
2835: r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
2836: r5.extend(NodeClassExpression0)
2837: else
2838: @index = i5
2839: r5 = nil
2840: end
2841: if r5
2842: s4 << r5
2843: else
2844: break
2845: end
2846: end
2847: if s4.empty?
2848: @index = i4
2849: r4 = nil
2850: else
2851: r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
2852: end
2853: s1 << r4
2854: if r4
2855: if has_terminal?('>', false, index)
2856: r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
2857: @index += 1
2858: else
2859: terminal_parse_failure('>')
2860: r9 = nil
2861: end
2862: s1 << r9
2863: end
2864: end
2865: end
2866: if s1.last
2867: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2868: r1.extend(NodeClassExpression1)
2869: r1.extend(NodeClassExpression2)
2870: else
2871: @index = i1
2872: r1 = nil
2873: end
2874: if r1
2875: r0 = r1
2876: else
2877: if has_terminal?('', false, index)
2878: r10 = instantiate_node(SyntaxNode,input, index...(index + 0))
2879: r10.extend(NodeClassExpression3)
2880: @index += 0
2881: else
2882: terminal_parse_failure('')
2883: r10 = nil
2884: end
2885: if r10
2886: r0 = r10
2887: else
2888: @index = i0
2889: r0 = nil
2890: end
2891: end
2892:
2893: node_cache[:node_class_expression][start_index] = r0
2894:
2895: r0
2896: end
# File lib/treetop/compiler/metagrammar.rb, line 3199
3199: def _nt_non_space_char
3200: start_index = index
3201: if node_cache[:non_space_char].has_key?(index)
3202: cached = node_cache[:non_space_char][index]
3203: if cached
3204: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3205: @index = cached.interval.end
3206: end
3207: return cached
3208: end
3209:
3210: i0, s0 = index, []
3211: i1 = index
3212: r2 = _nt_space
3213: if r2
3214: r1 = nil
3215: else
3216: @index = i1
3217: r1 = instantiate_node(SyntaxNode,input, index...index)
3218: end
3219: s0 << r1
3220: if r1
3221: if index < input_length
3222: r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
3223: @index += 1
3224: else
3225: terminal_parse_failure("any character")
3226: r3 = nil
3227: end
3228: s0 << r3
3229: end
3230: if s0.last
3231: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3232: r0.extend(NonSpaceChar0)
3233: else
3234: @index = i0
3235: r0 = nil
3236: end
3237:
3238: node_cache[:non_space_char][start_index] = r0
3239:
3240: r0
3241: end
# File lib/treetop/compiler/metagrammar.rb, line 2169
2169: def _nt_nonterminal
2170: start_index = index
2171: if node_cache[:nonterminal].has_key?(index)
2172: cached = node_cache[:nonterminal][index]
2173: if cached
2174: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2175: @index = cached.interval.end
2176: end
2177: return cached
2178: end
2179:
2180: i0, s0 = index, []
2181: i1 = index
2182: r2 = _nt_keyword_inside_grammar
2183: if r2
2184: r1 = nil
2185: else
2186: @index = i1
2187: r1 = instantiate_node(SyntaxNode,input, index...index)
2188: end
2189: s0 << r1
2190: if r1
2191: i3, s3 = index, []
2192: r4 = _nt_alpha_char
2193: s3 << r4
2194: if r4
2195: s5, i5 = [], index
2196: loop do
2197: r6 = _nt_alphanumeric_char
2198: if r6
2199: s5 << r6
2200: else
2201: break
2202: end
2203: end
2204: r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
2205: s3 << r5
2206: end
2207: if s3.last
2208: r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
2209: r3.extend(Nonterminal0)
2210: else
2211: @index = i3
2212: r3 = nil
2213: end
2214: s0 << r3
2215: end
2216: if s0.last
2217: r0 = instantiate_node(Nonterminal,input, i0...index, s0)
2218: r0.extend(Nonterminal1)
2219: else
2220: @index = i0
2221: r0 = nil
2222: end
2223:
2224: node_cache[:nonterminal][start_index] = r0
2225:
2226: r0
2227: end
# File lib/treetop/compiler/metagrammar.rb, line 1914
1914: def _nt_occurrence_range
1915: start_index = index
1916: if node_cache[:occurrence_range].has_key?(index)
1917: cached = node_cache[:occurrence_range][index]
1918: if cached
1919: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1920: @index = cached.interval.end
1921: end
1922: return cached
1923: end
1924:
1925: i0, s0 = index, []
1926: r2 = _nt_space
1927: if r2
1928: r1 = r2
1929: else
1930: r1 = instantiate_node(SyntaxNode,input, index...index)
1931: end
1932: s0 << r1
1933: if r1
1934: s3, i3 = [], index
1935: loop do
1936: if has_terminal?('\G[0-9]', true, index)
1937: r4 = true
1938: @index += 1
1939: else
1940: r4 = nil
1941: end
1942: if r4
1943: s3 << r4
1944: else
1945: break
1946: end
1947: end
1948: r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
1949: s0 << r3
1950: if r3
1951: if has_terminal?('..', false, index)
1952: r5 = instantiate_node(SyntaxNode,input, index...(index + 2))
1953: @index += 2
1954: else
1955: terminal_parse_failure('..')
1956: r5 = nil
1957: end
1958: s0 << r5
1959: if r5
1960: s6, i6 = [], index
1961: loop do
1962: if has_terminal?('\G[0-9]', true, index)
1963: r7 = true
1964: @index += 1
1965: else
1966: r7 = nil
1967: end
1968: if r7
1969: s6 << r7
1970: else
1971: break
1972: end
1973: end
1974: r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
1975: s0 << r6
1976: end
1977: end
1978: end
1979: if s0.last
1980: r0 = instantiate_node(OccurrenceRange,input, i0...index, s0)
1981: r0.extend(OccurrenceRange0)
1982: else
1983: @index = i0
1984: r0 = nil
1985: end
1986:
1987: node_cache[:occurrence_range][start_index] = r0
1988:
1989: r0
1990: end
# File lib/treetop/compiler/metagrammar.rb, line 1773
1773: def _nt_optional_suffix
1774: start_index = index
1775: if node_cache[:optional_suffix].has_key?(index)
1776: cached = node_cache[:optional_suffix][index]
1777: if cached
1778: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1779: @index = cached.interval.end
1780: end
1781: return cached
1782: end
1783:
1784: if has_terminal?('?', false, index)
1785: r0 = instantiate_node(Optional,input, index...(index + 1))
1786: @index += 1
1787: else
1788: terminal_parse_failure('?')
1789: r0 = nil
1790: end
1791:
1792: node_cache[:optional_suffix][start_index] = r0
1793:
1794: r0
1795: end
# File lib/treetop/compiler/metagrammar.rb, line 2093
2093: def _nt_parenthesized_expression
2094: start_index = index
2095: if node_cache[:parenthesized_expression].has_key?(index)
2096: cached = node_cache[:parenthesized_expression][index]
2097: if cached
2098: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2099: @index = cached.interval.end
2100: end
2101: return cached
2102: end
2103:
2104: i0, s0 = index, []
2105: if has_terminal?('(', false, index)
2106: r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
2107: @index += 1
2108: else
2109: terminal_parse_failure('(')
2110: r1 = nil
2111: end
2112: s0 << r1
2113: if r1
2114: r3 = _nt_space
2115: if r3
2116: r2 = r3
2117: else
2118: r2 = instantiate_node(SyntaxNode,input, index...index)
2119: end
2120: s0 << r2
2121: if r2
2122: r4 = _nt_parsing_expression
2123: s0 << r4
2124: if r4
2125: r6 = _nt_space
2126: if r6
2127: r5 = r6
2128: else
2129: r5 = instantiate_node(SyntaxNode,input, index...index)
2130: end
2131: s0 << r5
2132: if r5
2133: if has_terminal?(')', false, index)
2134: r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
2135: @index += 1
2136: else
2137: terminal_parse_failure(')')
2138: r7 = nil
2139: end
2140: s0 << r7
2141: end
2142: end
2143: end
2144: end
2145: if s0.last
2146: r0 = instantiate_node(ParenthesizedExpression,input, i0...index, s0)
2147: r0.extend(ParenthesizedExpression0)
2148: r0.extend(ParenthesizedExpression1)
2149: else
2150: @index = i0
2151: r0 = nil
2152: end
2153:
2154: node_cache[:parenthesized_expression][start_index] = r0
2155:
2156: r0
2157: end
# File lib/treetop/compiler/metagrammar.rb, line 903
903: def _nt_parsing_expression
904: start_index = index
905: if node_cache[:parsing_expression].has_key?(index)
906: cached = node_cache[:parsing_expression][index]
907: if cached
908: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
909: @index = cached.interval.end
910: end
911: return cached
912: end
913:
914: i0 = index
915: r1 = _nt_choice
916: if r1
917: r0 = r1
918: else
919: r2 = _nt_sequence
920: if r2
921: r0 = r2
922: else
923: r3 = _nt_primary
924: if r3
925: r0 = r3
926: else
927: @index = i0
928: r0 = nil
929: end
930: end
931: end
932:
933: node_cache[:parsing_expression][start_index] = r0
934:
935: r0
936: end
# File lib/treetop/compiler/metagrammar.rb, line 812
812: def _nt_parsing_rule
813: start_index = index
814: if node_cache[:parsing_rule].has_key?(index)
815: cached = node_cache[:parsing_rule][index]
816: if cached
817: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
818: @index = cached.interval.end
819: end
820: return cached
821: end
822:
823: i0, s0 = index, []
824: if has_terminal?('rule', false, index)
825: r1 = instantiate_node(SyntaxNode,input, index...(index + 4))
826: @index += 4
827: else
828: terminal_parse_failure('rule')
829: r1 = nil
830: end
831: s0 << r1
832: if r1
833: r2 = _nt_space
834: s0 << r2
835: if r2
836: r3 = _nt_nonterminal
837: s0 << r3
838: if r3
839: r4 = _nt_space
840: s0 << r4
841: if r4
842: i6, s6 = index, []
843: if has_terminal?('do', false, index)
844: r7 = instantiate_node(SyntaxNode,input, index...(index + 2))
845: @index += 2
846: else
847: terminal_parse_failure('do')
848: r7 = nil
849: end
850: s6 << r7
851: if r7
852: r8 = _nt_space
853: s6 << r8
854: end
855: if s6.last
856: r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
857: r6.extend(ParsingRule0)
858: else
859: @index = i6
860: r6 = nil
861: end
862: if r6
863: r5 = r6
864: else
865: r5 = instantiate_node(SyntaxNode,input, index...index)
866: end
867: s0 << r5
868: if r5
869: r9 = _nt_parsing_expression
870: s0 << r9
871: if r9
872: r10 = _nt_space
873: s0 << r10
874: if r10
875: if has_terminal?('end', false, index)
876: r11 = instantiate_node(SyntaxNode,input, index...(index + 3))
877: @index += 3
878: else
879: terminal_parse_failure('end')
880: r11 = nil
881: end
882: s0 << r11
883: end
884: end
885: end
886: end
887: end
888: end
889: end
890: if s0.last
891: r0 = instantiate_node(ParsingRule,input, i0...index, s0)
892: r0.extend(ParsingRule1)
893: else
894: @index = i0
895: r0 = nil
896: end
897:
898: node_cache[:parsing_rule][start_index] = r0
899:
900: r0
901: end
# File lib/treetop/compiler/metagrammar.rb, line 2989
2989: def _nt_predicate_block
2990: start_index = index
2991: if node_cache[:predicate_block].has_key?(index)
2992: cached = node_cache[:predicate_block][index]
2993: if cached
2994: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2995: @index = cached.interval.end
2996: end
2997: return cached
2998: end
2999:
3000: i0, s0 = index, []
3001: if has_terminal?('', false, index)
3002: r1 = instantiate_node(SyntaxNode,input, index...(index + 0))
3003: @index += 0
3004: else
3005: terminal_parse_failure('')
3006: r1 = nil
3007: end
3008: s0 << r1
3009: if r1
3010: r2 = _nt_inline_module
3011: s0 << r2
3012: end
3013: if s0.last
3014: r0 = instantiate_node(PredicateBlock,input, i0...index, s0)
3015: r0.extend(PredicateBlock0)
3016: else
3017: @index = i0
3018: r0 = nil
3019: end
3020:
3021: node_cache[:predicate_block][start_index] = r0
3022:
3023: r0
3024: end
# File lib/treetop/compiler/metagrammar.rb, line 1992
1992: def _nt_prefix
1993: start_index = index
1994: if node_cache[:prefix].has_key?(index)
1995: cached = node_cache[:prefix][index]
1996: if cached
1997: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1998: @index = cached.interval.end
1999: end
2000: return cached
2001: end
2002:
2003: i0 = index
2004: if has_terminal?('&', false, index)
2005: r1 = instantiate_node(AndPredicate,input, index...(index + 1))
2006: @index += 1
2007: else
2008: terminal_parse_failure('&')
2009: r1 = nil
2010: end
2011: if r1
2012: r0 = r1
2013: else
2014: if has_terminal?('!', false, index)
2015: r2 = instantiate_node(NotPredicate,input, index...(index + 1))
2016: @index += 1
2017: else
2018: terminal_parse_failure('!')
2019: r2 = nil
2020: end
2021: if r2
2022: r0 = r2
2023: else
2024: if has_terminal?('~', false, index)
2025: r3 = instantiate_node(TransientPrefix,input, index...(index + 1))
2026: @index += 1
2027: else
2028: terminal_parse_failure('~')
2029: r3 = nil
2030: end
2031: if r3
2032: r0 = r3
2033: else
2034: @index = i0
2035: r0 = nil
2036: end
2037: end
2038: end
2039:
2040: node_cache[:prefix][start_index] = r0
2041:
2042: r0
2043: end
# File lib/treetop/compiler/metagrammar.rb, line 1302
1302: def _nt_primary
1303: start_index = index
1304: if node_cache[:primary].has_key?(index)
1305: cached = node_cache[:primary][index]
1306: if cached
1307: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1308: @index = cached.interval.end
1309: end
1310: return cached
1311: end
1312:
1313: i0 = index
1314: i1, s1 = index, []
1315: r2 = _nt_prefix
1316: s1 << r2
1317: if r2
1318: r3 = _nt_atomic
1319: s1 << r3
1320: end
1321: if s1.last
1322: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1323: r1.extend(Primary0)
1324: r1.extend(Primary1)
1325: else
1326: @index = i1
1327: r1 = nil
1328: end
1329: if r1
1330: r0 = r1
1331: else
1332: i4, s4 = index, []
1333: r5 = _nt_prefix
1334: s4 << r5
1335: if r5
1336: r7 = _nt_space
1337: if r7
1338: r6 = r7
1339: else
1340: r6 = instantiate_node(SyntaxNode,input, index...index)
1341: end
1342: s4 << r6
1343: if r6
1344: r8 = _nt_predicate_block
1345: s4 << r8
1346: end
1347: end
1348: if s4.last
1349: r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
1350: r4.extend(Primary2)
1351: r4.extend(Primary3)
1352: else
1353: @index = i4
1354: r4 = nil
1355: end
1356: if r4
1357: r0 = r4
1358: else
1359: i9, s9 = index, []
1360: r10 = _nt_atomic
1361: s9 << r10
1362: if r10
1363: r11 = _nt_suffix
1364: s9 << r11
1365: if r11
1366: r12 = _nt_node_class_declarations
1367: s9 << r12
1368: end
1369: end
1370: if s9.last
1371: r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
1372: r9.extend(Primary4)
1373: r9.extend(Primary5)
1374: else
1375: @index = i9
1376: r9 = nil
1377: end
1378: if r9
1379: r0 = r9
1380: else
1381: i13, s13 = index, []
1382: r14 = _nt_atomic
1383: s13 << r14
1384: if r14
1385: r15 = _nt_node_class_declarations
1386: s13 << r15
1387: end
1388: if s13.last
1389: r13 = instantiate_node(SyntaxNode,input, i13...index, s13)
1390: r13.extend(Primary6)
1391: r13.extend(Primary7)
1392: else
1393: @index = i13
1394: r13 = nil
1395: end
1396: if r13
1397: r0 = r13
1398: else
1399: @index = i0
1400: r0 = nil
1401: end
1402: end
1403: end
1404: end
1405:
1406: node_cache[:primary][start_index] = r0
1407:
1408: r0
1409: end
# File lib/treetop/compiler/metagrammar.rb, line 2270
2270: def _nt_quoted_string
2271: start_index = index
2272: if node_cache[:quoted_string].has_key?(index)
2273: cached = node_cache[:quoted_string][index]
2274: if cached
2275: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2276: @index = cached.interval.end
2277: end
2278: return cached
2279: end
2280:
2281: i0 = index
2282: r1 = _nt_single_quoted_string
2283: if r1
2284: r0 = r1
2285: r0.extend(QuotedString0)
2286: else
2287: r2 = _nt_double_quoted_string
2288: if r2
2289: r0 = r2
2290: r0.extend(QuotedString0)
2291: else
2292: @index = i0
2293: r0 = nil
2294: end
2295: end
2296:
2297: node_cache[:quoted_string][start_index] = r0
2298:
2299: r0
2300: end
# File lib/treetop/compiler/metagrammar.rb, line 1857
1857: def _nt_repetition_suffix
1858: start_index = index
1859: if node_cache[:repetition_suffix].has_key?(index)
1860: cached = node_cache[:repetition_suffix][index]
1861: if cached
1862: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1863: @index = cached.interval.end
1864: end
1865: return cached
1866: end
1867:
1868: i0 = index
1869: if has_terminal?('+', false, index)
1870: r1 = instantiate_node(OneOrMore,input, index...(index + 1))
1871: @index += 1
1872: else
1873: terminal_parse_failure('+')
1874: r1 = nil
1875: end
1876: if r1
1877: r0 = r1
1878: else
1879: if has_terminal?('*', false, index)
1880: r2 = instantiate_node(ZeroOrMore,input, index...(index + 1))
1881: @index += 1
1882: else
1883: terminal_parse_failure('*')
1884: r2 = nil
1885: end
1886: if r2
1887: r0 = r2
1888: else
1889: r3 = _nt_occurrence_range
1890: if r3
1891: r0 = r3
1892: else
1893: @index = i0
1894: r0 = nil
1895: end
1896: end
1897: end
1898:
1899: node_cache[:repetition_suffix][start_index] = r0
1900:
1901: r0
1902: end
# File lib/treetop/compiler/metagrammar.rb, line 139
139: def _nt_require_statement
140: start_index = index
141: if node_cache[:require_statement].has_key?(index)
142: cached = node_cache[:require_statement][index]
143: if cached
144: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
145: @index = cached.interval.end
146: end
147: return cached
148: end
149:
150: i0, s0 = index, []
151: r2 = _nt_space
152: if r2
153: r1 = r2
154: else
155: r1 = instantiate_node(SyntaxNode,input, index...index)
156: end
157: s0 << r1
158: if r1
159: if has_terminal?("require", false, index)
160: r3 = instantiate_node(SyntaxNode,input, index...(index + 7))
161: @index += 7
162: else
163: terminal_parse_failure("require")
164: r3 = nil
165: end
166: s0 << r3
167: if r3
168: s4, i4 = [], index
169: loop do
170: if has_terminal?('\G[ \t]', true, index)
171: r5 = true
172: @index += 1
173: else
174: r5 = nil
175: end
176: if r5
177: s4 << r5
178: else
179: break
180: end
181: end
182: if s4.empty?
183: @index = i4
184: r4 = nil
185: else
186: r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
187: end
188: s0 << r4
189: if r4
190: s6, i6 = [], index
191: loop do
192: if has_terminal?('\G[^\n\r]', true, index)
193: r7 = true
194: @index += 1
195: else
196: r7 = nil
197: end
198: if r7
199: s6 << r7
200: else
201: break
202: end
203: end
204: if s6.empty?
205: @index = i6
206: r6 = nil
207: else
208: r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
209: end
210: s0 << r6
211: if r6
212: if has_terminal?('\G[\n\r]', true, index)
213: r8 = true
214: @index += 1
215: else
216: r8 = nil
217: end
218: s0 << r8
219: end
220: end
221: end
222: end
223: if s0.last
224: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
225: r0.extend(RequireStatement0)
226: else
227: @index = i0
228: r0 = nil
229: end
230:
231: node_cache[:require_statement][start_index] = r0
232:
233: r0
234: end
# File lib/treetop/compiler/metagrammar.rb, line 1095
1095: def _nt_sequence
1096: start_index = index
1097: if node_cache[:sequence].has_key?(index)
1098: cached = node_cache[:sequence][index]
1099: if cached
1100: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1101: @index = cached.interval.end
1102: end
1103: return cached
1104: end
1105:
1106: i0, s0 = index, []
1107: r1 = _nt_labeled_sequence_primary
1108: s0 << r1
1109: if r1
1110: s2, i2 = [], index
1111: loop do
1112: i3, s3 = index, []
1113: r4 = _nt_space
1114: s3 << r4
1115: if r4
1116: r5 = _nt_labeled_sequence_primary
1117: s3 << r5
1118: end
1119: if s3.last
1120: r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
1121: r3.extend(Sequence0)
1122: else
1123: @index = i3
1124: r3 = nil
1125: end
1126: if r3
1127: s2 << r3
1128: else
1129: break
1130: end
1131: end
1132: if s2.empty?
1133: @index = i2
1134: r2 = nil
1135: else
1136: r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1137: end
1138: s0 << r2
1139: if r2
1140: r6 = _nt_node_class_declarations
1141: s0 << r6
1142: end
1143: end
1144: if s0.last
1145: r0 = instantiate_node(Sequence,input, i0...index, s0)
1146: r0.extend(Sequence1)
1147: r0.extend(Sequence2)
1148: else
1149: @index = i0
1150: r0 = nil
1151: end
1152:
1153: node_cache[:sequence][start_index] = r0
1154:
1155: r0
1156: end
# File lib/treetop/compiler/metagrammar.rb, line 1652
1652: def _nt_sequence_primary
1653: start_index = index
1654: if node_cache[:sequence_primary].has_key?(index)
1655: cached = node_cache[:sequence_primary][index]
1656: if cached
1657: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1658: @index = cached.interval.end
1659: end
1660: return cached
1661: end
1662:
1663: i0 = index
1664: i1, s1 = index, []
1665: r2 = _nt_prefix
1666: s1 << r2
1667: if r2
1668: r3 = _nt_atomic
1669: s1 << r3
1670: end
1671: if s1.last
1672: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1673: r1.extend(SequencePrimary0)
1674: r1.extend(SequencePrimary1)
1675: else
1676: @index = i1
1677: r1 = nil
1678: end
1679: if r1
1680: r0 = r1
1681: else
1682: i4, s4 = index, []
1683: r5 = _nt_prefix
1684: s4 << r5
1685: if r5
1686: r7 = _nt_space
1687: if r7
1688: r6 = r7
1689: else
1690: r6 = instantiate_node(SyntaxNode,input, index...index)
1691: end
1692: s4 << r6
1693: if r6
1694: r8 = _nt_predicate_block
1695: s4 << r8
1696: end
1697: end
1698: if s4.last
1699: r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
1700: r4.extend(SequencePrimary2)
1701: r4.extend(SequencePrimary3)
1702: else
1703: @index = i4
1704: r4 = nil
1705: end
1706: if r4
1707: r0 = r4
1708: else
1709: i9, s9 = index, []
1710: r10 = _nt_atomic
1711: s9 << r10
1712: if r10
1713: r11 = _nt_suffix
1714: s9 << r11
1715: end
1716: if s9.last
1717: r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
1718: r9.extend(SequencePrimary4)
1719: r9.extend(SequencePrimary5)
1720: else
1721: @index = i9
1722: r9 = nil
1723: end
1724: if r9
1725: r0 = r9
1726: else
1727: r12 = _nt_atomic
1728: if r12
1729: r0 = r12
1730: else
1731: @index = i0
1732: r0 = nil
1733: end
1734: end
1735: end
1736: end
1737:
1738: node_cache[:sequence_primary][start_index] = r0
1739:
1740: r0
1741: end
# File lib/treetop/compiler/metagrammar.rb, line 2439
2439: def _nt_single_quoted_string
2440: start_index = index
2441: if node_cache[:single_quoted_string].has_key?(index)
2442: cached = node_cache[:single_quoted_string][index]
2443: if cached
2444: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2445: @index = cached.interval.end
2446: end
2447: return cached
2448: end
2449:
2450: i0, s0 = index, []
2451: if has_terminal?("'", false, index)
2452: r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
2453: @index += 1
2454: else
2455: terminal_parse_failure("'")
2456: r1 = nil
2457: end
2458: s0 << r1
2459: if r1
2460: s2, i2 = [], index
2461: loop do
2462: i3, s3 = index, []
2463: i4 = index
2464: if has_terminal?("'", false, index)
2465: r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
2466: @index += 1
2467: else
2468: terminal_parse_failure("'")
2469: r5 = nil
2470: end
2471: if r5
2472: r4 = nil
2473: else
2474: @index = i4
2475: r4 = instantiate_node(SyntaxNode,input, index...index)
2476: end
2477: s3 << r4
2478: if r4
2479: i6 = index
2480: if has_terminal?("\\\\", false, index)
2481: r7 = instantiate_node(SyntaxNode,input, index...(index + 2))
2482: @index += 2
2483: else
2484: terminal_parse_failure("\\\\")
2485: r7 = nil
2486: end
2487: if r7
2488: r6 = r7
2489: else
2490: if has_terminal?("\\'", false, index)
2491: r8 = instantiate_node(SyntaxNode,input, index...(index + 2))
2492: @index += 2
2493: else
2494: terminal_parse_failure("\\'")
2495: r8 = nil
2496: end
2497: if r8
2498: r6 = r8
2499: else
2500: if index < input_length
2501: r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
2502: @index += 1
2503: else
2504: terminal_parse_failure("any character")
2505: r9 = nil
2506: end
2507: if r9
2508: r6 = r9
2509: else
2510: @index = i6
2511: r6 = nil
2512: end
2513: end
2514: end
2515: s3 << r6
2516: end
2517: if s3.last
2518: r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
2519: r3.extend(SingleQuotedString0)
2520: else
2521: @index = i3
2522: r3 = nil
2523: end
2524: if r3
2525: s2 << r3
2526: else
2527: break
2528: end
2529: end
2530: r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
2531: s0 << r2
2532: if r2
2533: if has_terminal?("'", false, index)
2534: r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
2535: @index += 1
2536: else
2537: terminal_parse_failure("'")
2538: r10 = nil
2539: end
2540: s0 << r10
2541: end
2542: end
2543: if s0.last
2544: r0 = instantiate_node(Terminal,input, i0...index, s0)
2545: r0.extend(SingleQuotedString1)
2546: else
2547: @index = i0
2548: r0 = nil
2549: end
2550:
2551: node_cache[:single_quoted_string][start_index] = r0
2552:
2553: r0
2554: end
# File lib/treetop/compiler/metagrammar.rb, line 3301
3301: def _nt_space
3302: start_index = index
3303: if node_cache[:space].has_key?(index)
3304: cached = node_cache[:space][index]
3305: if cached
3306: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3307: @index = cached.interval.end
3308: end
3309: return cached
3310: end
3311:
3312: s0, i0 = [], index
3313: loop do
3314: i1 = index
3315: r2 = _nt_white
3316: if r2
3317: r1 = r2
3318: else
3319: r3 = _nt_comment_to_eol
3320: if r3
3321: r1 = r3
3322: else
3323: @index = i1
3324: r1 = nil
3325: end
3326: end
3327: if r1
3328: s0 << r1
3329: else
3330: break
3331: end
3332: end
3333: if s0.empty?
3334: @index = i0
3335: r0 = nil
3336: else
3337: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3338: end
3339:
3340: node_cache[:space][start_index] = r0
3341:
3342: r0
3343: end
# File lib/treetop/compiler/metagrammar.rb, line 1743
1743: def _nt_suffix
1744: start_index = index
1745: if node_cache[:suffix].has_key?(index)
1746: cached = node_cache[:suffix][index]
1747: if cached
1748: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1749: @index = cached.interval.end
1750: end
1751: return cached
1752: end
1753:
1754: i0 = index
1755: r1 = _nt_repetition_suffix
1756: if r1
1757: r0 = r1
1758: else
1759: r2 = _nt_optional_suffix
1760: if r2
1761: r0 = r2
1762: else
1763: @index = i0
1764: r0 = nil
1765: end
1766: end
1767:
1768: node_cache[:suffix][start_index] = r0
1769:
1770: r0
1771: end
# File lib/treetop/compiler/metagrammar.rb, line 2229
2229: def _nt_terminal
2230: start_index = index
2231: if node_cache[:terminal].has_key?(index)
2232: cached = node_cache[:terminal][index]
2233: if cached
2234: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2235: @index = cached.interval.end
2236: end
2237: return cached
2238: end
2239:
2240: i0 = index
2241: r1 = _nt_quoted_string
2242: if r1
2243: r0 = r1
2244: else
2245: r2 = _nt_character_class
2246: if r2
2247: r0 = r2
2248: else
2249: r3 = _nt_anything_symbol
2250: if r3
2251: r0 = r3
2252: else
2253: @index = i0
2254: r0 = nil
2255: end
2256: end
2257: end
2258:
2259: node_cache[:terminal][start_index] = r0
2260:
2261: r0
2262: end
# File lib/treetop/compiler/metagrammar.rb, line 2932
2932: def _nt_trailing_inline_module
2933: start_index = index
2934: if node_cache[:trailing_inline_module].has_key?(index)
2935: cached = node_cache[:trailing_inline_module][index]
2936: if cached
2937: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2938: @index = cached.interval.end
2939: end
2940: return cached
2941: end
2942:
2943: i0 = index
2944: i1, s1 = index, []
2945: r2 = _nt_space
2946: s1 << r2
2947: if r2
2948: r3 = _nt_inline_module
2949: s1 << r3
2950: end
2951: if s1.last
2952: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2953: r1.extend(TrailingInlineModule0)
2954: r1.extend(TrailingInlineModule1)
2955: else
2956: @index = i1
2957: r1 = nil
2958: end
2959: if r1
2960: r0 = r1
2961: else
2962: if has_terminal?('', false, index)
2963: r4 = instantiate_node(SyntaxNode,input, index...(index + 0))
2964: r4.extend(TrailingInlineModule2)
2965: @index += 0
2966: else
2967: terminal_parse_failure('')
2968: r4 = nil
2969: end
2970: if r4
2971: r0 = r4
2972: else
2973: @index = i0
2974: r0 = nil
2975: end
2976: end
2977:
2978: node_cache[:trailing_inline_module][start_index] = r0
2979:
2980: r0
2981: end
# File lib/treetop/compiler/metagrammar.rb, line 43
43: def _nt_treetop_file
44: start_index = index
45: if node_cache[:treetop_file].has_key?(index)
46: cached = node_cache[:treetop_file][index]
47: if cached
48: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
49: @index = cached.interval.end
50: end
51: return cached
52: end
53:
54: i0, s0 = index, []
55: s1, i1 = [], index
56: loop do
57: i2, s2 = index, []
58: r4 = _nt_space
59: if r4
60: r3 = r4
61: else
62: r3 = instantiate_node(SyntaxNode,input, index...index)
63: end
64: s2 << r3
65: if r3
66: r5 = _nt_require_statement
67: s2 << r5
68: end
69: if s2.last
70: r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
71: r2.extend(TreetopFile0)
72: else
73: @index = i2
74: r2 = nil
75: end
76: if r2
77: s1 << r2
78: else
79: break
80: end
81: end
82: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
83: s0 << r1
84: if r1
85: r7 = _nt_space
86: if r7
87: r6 = r7
88: else
89: r6 = instantiate_node(SyntaxNode,input, index...index)
90: end
91: s0 << r6
92: if r6
93: i8 = index
94: r9 = _nt_module_declaration
95: if r9
96: r8 = r9
97: else
98: r10 = _nt_grammar
99: if r10
100: r8 = r10
101: else
102: @index = i8
103: r8 = nil
104: end
105: end
106: s0 << r8
107: if r8
108: r12 = _nt_space
109: if r12
110: r11 = r12
111: else
112: r11 = instantiate_node(SyntaxNode,input, index...index)
113: end
114: s0 << r11
115: end
116: end
117: end
118: if s0.last
119: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
120: r0.extend(TreetopFile1)
121: r0.extend(TreetopFile2)
122: else
123: @index = i0
124: r0 = nil
125: end
126:
127: node_cache[:treetop_file][start_index] = r0
128:
129: r0
130: end
# File lib/treetop/compiler/metagrammar.rb, line 3429
3429: def _nt_white
3430: start_index = index
3431: if node_cache[:white].has_key?(index)
3432: cached = node_cache[:white][index]
3433: if cached
3434: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3435: @index = cached.interval.end
3436: end
3437: return cached
3438: end
3439:
3440: if has_terminal?('\G[ \t\n\r]', true, index)
3441: r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
3442: @index += 1
3443: else
3444: r0 = nil
3445: end
3446:
3447: node_cache[:white][start_index] = r0
3448:
3449: r0
3450: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.