# File lib/mail/parsers/rfc2822.rb, line 14
14: def _nt_ALPHA
15: start_index = index
16: if node_cache[:ALPHA].has_key?(index)
17: cached = node_cache[:ALPHA][index]
18: if cached
19: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
20: @index = cached.interval.end
21: end
22: return cached
23: end
24:
25: if has_terminal?('\G[a-zA-Z]', true, index)
26: r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
27: @index += 1
28: else
29: r0 = nil
30: end
31:
32: node_cache[:ALPHA][start_index] = r0
33:
34: r0
35: end
# File lib/mail/parsers/rfc2822.rb, line 304
304: def _nt_CFWS
305: start_index = index
306: if node_cache[:CFWS].has_key?(index)
307: cached = node_cache[:CFWS][index]
308: if cached
309: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
310: @index = cached.interval.end
311: end
312: return cached
313: end
314:
315: i0, s0 = index, []
316: s1, i1 = [], index
317: loop do
318: i2, s2 = index, []
319: s3, i3 = [], index
320: loop do
321: r4 = _nt_FWS
322: if r4
323: s3 << r4
324: else
325: break
326: end
327: end
328: r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
329: s2 << r3
330: if r3
331: r5 = _nt_comment
332: s2 << r5
333: end
334: if s2.last
335: r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
336: r2.extend(CFWS0)
337: else
338: @index = i2
339: r2 = nil
340: end
341: if r2
342: s1 << r2
343: else
344: break
345: end
346: end
347: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
348: s0 << r1
349: if r1
350: r7 = _nt_FWS
351: if r7
352: r6 = r7
353: else
354: r6 = instantiate_node(SyntaxNode,input, index...index)
355: end
356: s0 << r6
357: end
358: if s0.last
359: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
360: r0.extend(CFWS1)
361: else
362: @index = i0
363: r0 = nil
364: end
365:
366: node_cache[:CFWS][start_index] = r0
367:
368: r0
369: end
# File lib/mail/parsers/rfc2822.rb, line 108
108: def _nt_CR
109: start_index = index
110: if node_cache[:CR].has_key?(index)
111: cached = node_cache[:CR][index]
112: if cached
113: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
114: @index = cached.interval.end
115: end
116: return cached
117: end
118:
119: if has_terminal?("\r", false, index)
120: r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
121: @index += 1
122: else
123: terminal_parse_failure("\r")
124: r0 = nil
125: end
126:
127: node_cache[:CR][start_index] = r0
128:
129: r0
130: end
# File lib/mail/parsers/rfc2822.rb, line 132
132: def _nt_CRLF
133: start_index = index
134: if node_cache[:CRLF].has_key?(index)
135: cached = node_cache[:CRLF][index]
136: if cached
137: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
138: @index = cached.interval.end
139: end
140: return cached
141: end
142:
143: if has_terminal?("\r\n", false, index)
144: r0 = instantiate_node(SyntaxNode,input, index...(index + 2))
145: @index += 2
146: else
147: terminal_parse_failure("\r\n")
148: r0 = nil
149: end
150:
151: node_cache[:CRLF][start_index] = r0
152:
153: r0
154: end
# File lib/mail/parsers/rfc2822.rb, line 37
37: def _nt_DIGIT
38: start_index = index
39: if node_cache[:DIGIT].has_key?(index)
40: cached = node_cache[:DIGIT][index]
41: if cached
42: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
43: @index = cached.interval.end
44: end
45: return cached
46: end
47:
48: if has_terminal?('\G[0-9]', true, index)
49: r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
50: @index += 1
51: else
52: r0 = nil
53: end
54:
55: node_cache[:DIGIT][start_index] = r0
56:
57: r0
58: end
# File lib/mail/parsers/rfc2822.rb, line 60
60: def _nt_DQUOTE
61: start_index = index
62: if node_cache[:DQUOTE].has_key?(index)
63: cached = node_cache[:DQUOTE][index]
64: if cached
65: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
66: @index = cached.interval.end
67: end
68: return cached
69: end
70:
71: if has_terminal?('"', false, index)
72: r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
73: @index += 1
74: else
75: terminal_parse_failure('"')
76: r0 = nil
77: end
78:
79: node_cache[:DQUOTE][start_index] = r0
80:
81: r0
82: end
# File lib/mail/parsers/rfc2822.rb, line 193
193: def _nt_FWS
194: start_index = index
195: if node_cache[:FWS].has_key?(index)
196: cached = node_cache[:FWS][index]
197: if cached
198: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
199: @index = cached.interval.end
200: end
201: return cached
202: end
203:
204: i0 = index
205: i1, s1 = index, []
206: s2, i2 = [], index
207: loop do
208: r3 = _nt_WSP
209: if r3
210: s2 << r3
211: else
212: break
213: end
214: end
215: r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
216: s1 << r2
217: if r2
218: r4 = _nt_CRLF
219: s1 << r4
220: if r4
221: s5, i5 = [], index
222: loop do
223: r6 = _nt_WSP
224: if r6
225: s5 << r6
226: else
227: break
228: end
229: end
230: if s5.empty?
231: @index = i5
232: r5 = nil
233: else
234: r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
235: end
236: s1 << r5
237: end
238: end
239: if s1.last
240: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
241: r1.extend(FWS0)
242: else
243: @index = i1
244: r1 = nil
245: end
246: if r1
247: r0 = r1
248: else
249: i7, s7 = index, []
250: r8 = _nt_CRLF
251: s7 << r8
252: if r8
253: s9, i9 = [], index
254: loop do
255: r10 = _nt_WSP
256: if r10
257: s9 << r10
258: else
259: break
260: end
261: end
262: if s9.empty?
263: @index = i9
264: r9 = nil
265: else
266: r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
267: end
268: s7 << r9
269: end
270: if s7.last
271: r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
272: r7.extend(FWS1)
273: else
274: @index = i7
275: r7 = nil
276: end
277: if r7
278: r0 = r7
279: else
280: r11 = _nt_obs_FWS
281: if r11
282: r0 = r11
283: else
284: @index = i0
285: r0 = nil
286: end
287: end
288: end
289:
290: node_cache[:FWS][start_index] = r0
291:
292: r0
293: end
# File lib/mail/parsers/rfc2822.rb, line 84
84: def _nt_LF
85: start_index = index
86: if node_cache[:LF].has_key?(index)
87: cached = node_cache[:LF][index]
88: if cached
89: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
90: @index = cached.interval.end
91: end
92: return cached
93: end
94:
95: if has_terminal?("\n", false, index)
96: r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
97: @index += 1
98: else
99: terminal_parse_failure("\n")
100: r0 = nil
101: end
102:
103: node_cache[:LF][start_index] = r0
104:
105: r0
106: end
# File lib/mail/parsers/rfc2822.rb, line 371
371: def _nt_NO_WS_CTL
372: start_index = index
373: if node_cache[:NO_WS_CTL].has_key?(index)
374: cached = node_cache[:NO_WS_CTL][index]
375: if cached
376: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
377: @index = cached.interval.end
378: end
379: return cached
380: end
381:
382: i0 = index
383: if has_terminal?('\G[\x01-\x08]', true, index)
384: r1 = true
385: @index += 1
386: else
387: r1 = nil
388: end
389: if r1
390: r0 = r1
391: else
392: if has_terminal?('\G[\x0B-\x0C]', true, index)
393: r2 = true
394: @index += 1
395: else
396: r2 = nil
397: end
398: if r2
399: r0 = r2
400: else
401: if has_terminal?('\G[\x0E-\x1F]', true, index)
402: r3 = true
403: @index += 1
404: else
405: r3 = nil
406: end
407: if r3
408: r0 = r3
409: else
410: if has_terminal?('\G[\x7f]', true, index)
411: r4 = true
412: @index += 1
413: else
414: r4 = nil
415: end
416: if r4
417: r0 = r4
418: else
419: @index = i0
420: r0 = nil
421: end
422: end
423: end
424: end
425:
426: node_cache[:NO_WS_CTL][start_index] = r0
427:
428: r0
429: end
# File lib/mail/parsers/rfc2822.rb, line 156
156: def _nt_WSP
157: start_index = index
158: if node_cache[:WSP].has_key?(index)
159: cached = node_cache[:WSP][index]
160: if cached
161: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
162: @index = cached.interval.end
163: end
164: return cached
165: end
166:
167: if has_terminal?('\G[\x09\x20]', true, index)
168: r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
169: @index += 1
170: else
171: r0 = nil
172: end
173:
174: node_cache[:WSP][start_index] = r0
175:
176: r0
177: end
# File lib/mail/parsers/rfc2822.rb, line 2065
2065: def _nt_addr_spec
2066: start_index = index
2067: if node_cache[:addr_spec].has_key?(index)
2068: cached = node_cache[:addr_spec][index]
2069: if cached
2070: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2071: @index = cached.interval.end
2072: end
2073: return cached
2074: end
2075:
2076: i0 = index
2077: i1, s1 = index, []
2078: r2 = _nt_local_part
2079: s1 << r2
2080: if r2
2081: if has_terminal?("@", false, index)
2082: r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
2083: @index += 1
2084: else
2085: terminal_parse_failure("@")
2086: r3 = nil
2087: end
2088: s1 << r3
2089: if r3
2090: r4 = _nt_domain
2091: s1 << r4
2092: end
2093: end
2094: if s1.last
2095: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2096: r1.extend(AddrSpec0)
2097: else
2098: @index = i1
2099: r1 = nil
2100: end
2101: if r1
2102: r0 = r1
2103: else
2104: r5 = _nt_local_part
2105: if r5
2106: r0 = r5
2107: else
2108: @index = i0
2109: r0 = nil
2110: end
2111: end
2112:
2113: node_cache[:addr_spec][start_index] = r0
2114:
2115: r0
2116: end
# File lib/mail/parsers/rfc2822.rb, line 2835
2835: def _nt_address
2836: start_index = index
2837: if node_cache[:address].has_key?(index)
2838: cached = node_cache[:address][index]
2839: if cached
2840: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2841: @index = cached.interval.end
2842: end
2843: return cached
2844: end
2845:
2846: i0 = index
2847: r1 = _nt_group
2848: r1.extend(Address0)
2849: if r1
2850: r0 = r1
2851: else
2852: r2 = _nt_mailbox
2853: r2.extend(Address1)
2854: if r2
2855: r0 = r2
2856: else
2857: @index = i0
2858: r0 = nil
2859: end
2860: end
2861:
2862: node_cache[:address][start_index] = r0
2863:
2864: r0
2865: end
# File lib/mail/parsers/rfc2822.rb, line 2883
2883: def _nt_address_list
2884: start_index = index
2885: if node_cache[:address_list].has_key?(index)
2886: cached = node_cache[:address_list][index]
2887: if cached
2888: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2889: @index = cached.interval.end
2890: end
2891: return cached
2892: end
2893:
2894: i0, s0 = index, []
2895: r1 = _nt_address
2896: s0 << r1
2897: if r1
2898: s2, i2 = [], index
2899: loop do
2900: i3, s3 = index, []
2901: if has_terminal?(",", false, index)
2902: r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2903: @index += 1
2904: else
2905: terminal_parse_failure(",")
2906: r4 = nil
2907: end
2908: s3 << r4
2909: if r4
2910: s5, i5 = [], index
2911: loop do
2912: r6 = _nt_FWS
2913: if r6
2914: s5 << r6
2915: else
2916: break
2917: end
2918: end
2919: r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
2920: s3 << r5
2921: if r5
2922: r7 = _nt_address
2923: s3 << r7
2924: end
2925: end
2926: if s3.last
2927: r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
2928: r3.extend(AddressList0)
2929: else
2930: @index = i3
2931: r3 = nil
2932: end
2933: if r3
2934: s2 << r3
2935: else
2936: break
2937: end
2938: end
2939: r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
2940: s0 << r2
2941: end
2942: if s0.last
2943: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2944: r0.extend(AddressList1)
2945: else
2946: @index = i0
2947: r0 = nil
2948: end
2949:
2950: node_cache[:address_list][start_index] = r0
2951:
2952: r0
2953: end
# File lib/mail/parsers/rfc2822.rb, line 1978
1978: def _nt_angle_addr
1979: start_index = index
1980: if node_cache[:angle_addr].has_key?(index)
1981: cached = node_cache[:angle_addr][index]
1982: if cached
1983: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1984: @index = cached.interval.end
1985: end
1986: return cached
1987: end
1988:
1989: i0 = index
1990: i1, s1 = index, []
1991: r3 = _nt_CFWS
1992: if r3
1993: r2 = r3
1994: else
1995: r2 = instantiate_node(SyntaxNode,input, index...index)
1996: end
1997: s1 << r2
1998: if r2
1999: if has_terminal?("<", false, index)
2000: r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2001: @index += 1
2002: else
2003: terminal_parse_failure("<")
2004: r4 = nil
2005: end
2006: s1 << r4
2007: if r4
2008: r5 = _nt_addr_spec
2009: s1 << r5
2010: if r5
2011: if has_terminal?(">", false, index)
2012: r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
2013: @index += 1
2014: else
2015: terminal_parse_failure(">")
2016: r6 = nil
2017: end
2018: s1 << r6
2019: if r6
2020: r8 = _nt_CFWS
2021: if r8
2022: r7 = r8
2023: else
2024: r7 = instantiate_node(SyntaxNode,input, index...index)
2025: end
2026: s1 << r7
2027: end
2028: end
2029: end
2030: end
2031: if s1.last
2032: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2033: r1.extend(AngleAddr0)
2034: else
2035: @index = i1
2036: r1 = nil
2037: end
2038: if r1
2039: r0 = r1
2040: else
2041: r9 = _nt_obs_angle_addr
2042: if r9
2043: r0 = r9
2044: else
2045: @index = i0
2046: r0 = nil
2047: end
2048: end
2049:
2050: node_cache[:angle_addr][start_index] = r0
2051:
2052: r0
2053: end
# File lib/mail/parsers/rfc2822.rb, line 770
770: def _nt_atext
771: start_index = index
772: if node_cache[:atext].has_key?(index)
773: cached = node_cache[:atext][index]
774: if cached
775: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
776: @index = cached.interval.end
777: end
778: return cached
779: end
780:
781: i0 = index
782: r1 = _nt_ALPHA
783: if r1
784: r0 = r1
785: else
786: r2 = _nt_DIGIT
787: if r2
788: r0 = r2
789: else
790: if has_terminal?("!", false, index)
791: r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
792: @index += 1
793: else
794: terminal_parse_failure("!")
795: r3 = nil
796: end
797: if r3
798: r0 = r3
799: else
800: if has_terminal?("#", false, index)
801: r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
802: @index += 1
803: else
804: terminal_parse_failure("#")
805: r4 = nil
806: end
807: if r4
808: r0 = r4
809: else
810: if has_terminal?("$", false, index)
811: r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
812: @index += 1
813: else
814: terminal_parse_failure("$")
815: r5 = nil
816: end
817: if r5
818: r0 = r5
819: else
820: if has_terminal?("%", false, index)
821: r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
822: @index += 1
823: else
824: terminal_parse_failure("%")
825: r6 = nil
826: end
827: if r6
828: r0 = r6
829: else
830: if has_terminal?("&", false, index)
831: r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
832: @index += 1
833: else
834: terminal_parse_failure("&")
835: r7 = nil
836: end
837: if r7
838: r0 = r7
839: else
840: if has_terminal?("'", false, index)
841: r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
842: @index += 1
843: else
844: terminal_parse_failure("'")
845: r8 = nil
846: end
847: if r8
848: r0 = r8
849: else
850: if has_terminal?("*", false, index)
851: r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
852: @index += 1
853: else
854: terminal_parse_failure("*")
855: r9 = nil
856: end
857: if r9
858: r0 = r9
859: else
860: if has_terminal?("+", false, index)
861: r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
862: @index += 1
863: else
864: terminal_parse_failure("+")
865: r10 = nil
866: end
867: if r10
868: r0 = r10
869: else
870: if has_terminal?("-", false, index)
871: r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
872: @index += 1
873: else
874: terminal_parse_failure("-")
875: r11 = nil
876: end
877: if r11
878: r0 = r11
879: else
880: if has_terminal?("/", false, index)
881: r12 = instantiate_node(SyntaxNode,input, index...(index + 1))
882: @index += 1
883: else
884: terminal_parse_failure("/")
885: r12 = nil
886: end
887: if r12
888: r0 = r12
889: else
890: if has_terminal?("=", false, index)
891: r13 = instantiate_node(SyntaxNode,input, index...(index + 1))
892: @index += 1
893: else
894: terminal_parse_failure("=")
895: r13 = nil
896: end
897: if r13
898: r0 = r13
899: else
900: if has_terminal?("?", false, index)
901: r14 = instantiate_node(SyntaxNode,input, index...(index + 1))
902: @index += 1
903: else
904: terminal_parse_failure("?")
905: r14 = nil
906: end
907: if r14
908: r0 = r14
909: else
910: if has_terminal?("^", false, index)
911: r15 = instantiate_node(SyntaxNode,input, index...(index + 1))
912: @index += 1
913: else
914: terminal_parse_failure("^")
915: r15 = nil
916: end
917: if r15
918: r0 = r15
919: else
920: if has_terminal?("_", false, index)
921: r16 = instantiate_node(SyntaxNode,input, index...(index + 1))
922: @index += 1
923: else
924: terminal_parse_failure("_")
925: r16 = nil
926: end
927: if r16
928: r0 = r16
929: else
930: if has_terminal?("`", false, index)
931: r17 = instantiate_node(SyntaxNode,input, index...(index + 1))
932: @index += 1
933: else
934: terminal_parse_failure("`")
935: r17 = nil
936: end
937: if r17
938: r0 = r17
939: else
940: if has_terminal?("{", false, index)
941: r18 = instantiate_node(SyntaxNode,input, index...(index + 1))
942: @index += 1
943: else
944: terminal_parse_failure("{")
945: r18 = nil
946: end
947: if r18
948: r0 = r18
949: else
950: if has_terminal?("|", false, index)
951: r19 = instantiate_node(SyntaxNode,input, index...(index + 1))
952: @index += 1
953: else
954: terminal_parse_failure("|")
955: r19 = nil
956: end
957: if r19
958: r0 = r19
959: else
960: if has_terminal?("}", false, index)
961: r20 = instantiate_node(SyntaxNode,input, index...(index + 1))
962: @index += 1
963: else
964: terminal_parse_failure("}")
965: r20 = nil
966: end
967: if r20
968: r0 = r20
969: else
970: if has_terminal?("~", false, index)
971: r21 = instantiate_node(SyntaxNode,input, index...(index + 1))
972: @index += 1
973: else
974: terminal_parse_failure("~")
975: r21 = nil
976: end
977: if r21
978: r0 = r21
979: else
980: @index = i0
981: r0 = nil
982: end
983: end
984: end
985: end
986: end
987: end
988: end
989: end
990: end
991: end
992: end
993: end
994: end
995: end
996: end
997: end
998: end
999: end
1000: end
1001: end
1002: end
1003:
1004: node_cache[:atext][start_index] = r0
1005:
1006: r0
1007: end
# File lib/mail/parsers/rfc2822.rb, line 1062
1062: def _nt_atom
1063: start_index = index
1064: if node_cache[:atom].has_key?(index)
1065: cached = node_cache[:atom][index]
1066: if cached
1067: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1068: @index = cached.interval.end
1069: end
1070: return cached
1071: end
1072:
1073: i0, s0 = index, []
1074: r2 = _nt_CFWS
1075: if r2
1076: r1 = r2
1077: else
1078: r1 = instantiate_node(SyntaxNode,input, index...index)
1079: end
1080: s0 << r1
1081: if r1
1082: s3, i3 = [], index
1083: loop do
1084: r4 = _nt_atext
1085: if r4
1086: s3 << r4
1087: else
1088: break
1089: end
1090: end
1091: if s3.empty?
1092: @index = i3
1093: r3 = nil
1094: else
1095: r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
1096: end
1097: s0 << r3
1098: if r3
1099: r6 = _nt_CFWS
1100: if r6
1101: r5 = r6
1102: else
1103: r5 = instantiate_node(SyntaxNode,input, index...index)
1104: end
1105: s0 << r5
1106: end
1107: end
1108: if s0.last
1109: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1110: r0.extend(Atom0)
1111: else
1112: @index = i0
1113: r0 = nil
1114: end
1115:
1116: node_cache[:atom][start_index] = r0
1117:
1118: r0
1119: end
# File lib/mail/parsers/rfc2822.rb, line 643
643: def _nt_ccontent
644: start_index = index
645: if node_cache[:ccontent].has_key?(index)
646: cached = node_cache[:ccontent][index]
647: if cached
648: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
649: @index = cached.interval.end
650: end
651: return cached
652: end
653:
654: i0 = index
655: r1 = _nt_ctext
656: if r1
657: r0 = r1
658: else
659: r2 = _nt_quoted_pair
660: if r2
661: r0 = r2
662: else
663: r3 = _nt_comment
664: if r3
665: r0 = r3
666: else
667: @index = i0
668: r0 = nil
669: end
670: end
671: end
672:
673: node_cache[:ccontent][start_index] = r0
674:
675: r0
676: end
# File lib/mail/parsers/rfc2822.rb, line 687
687: def _nt_comment
688: start_index = index
689: if node_cache[:comment].has_key?(index)
690: cached = node_cache[:comment][index]
691: if cached
692: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
693: @index = cached.interval.end
694: end
695: return cached
696: end
697:
698: i0, s0 = index, []
699: if has_terminal?("(", false, index)
700: r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
701: @index += 1
702: else
703: terminal_parse_failure("(")
704: r1 = nil
705: end
706: s0 << r1
707: if r1
708: s2, i2 = [], index
709: loop do
710: i3, s3 = index, []
711: r5 = _nt_FWS
712: if r5
713: r4 = r5
714: else
715: r4 = instantiate_node(SyntaxNode,input, index...index)
716: end
717: s3 << r4
718: if r4
719: r6 = _nt_ccontent
720: s3 << r6
721: end
722: if s3.last
723: r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
724: r3.extend(Comment0)
725: else
726: @index = i3
727: r3 = nil
728: end
729: if r3
730: s2 << r3
731: else
732: break
733: end
734: end
735: r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
736: s0 << r2
737: if r2
738: r8 = _nt_FWS
739: if r8
740: r7 = r8
741: else
742: r7 = instantiate_node(SyntaxNode,input, index...index)
743: end
744: s0 << r7
745: if r7
746: if has_terminal?(")", false, index)
747: r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
748: @index += 1
749: else
750: terminal_parse_failure(")")
751: r9 = nil
752: end
753: s0 << r9
754: end
755: end
756: end
757: if s0.last
758: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
759: r0.extend(Comment1)
760: else
761: @index = i0
762: r0 = nil
763: end
764:
765: node_cache[:comment][start_index] = r0
766:
767: r0
768: end
# File lib/mail/parsers/rfc2822.rb, line 588
588: def _nt_ctext
589: start_index = index
590: if node_cache[:ctext].has_key?(index)
591: cached = node_cache[:ctext][index]
592: if cached
593: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
594: @index = cached.interval.end
595: end
596: return cached
597: end
598:
599: i0 = index
600: r1 = _nt_NO_WS_CTL
601: if r1
602: r0 = r1
603: else
604: if has_terminal?('\G[\x21-\x27]', true, index)
605: r2 = true
606: @index += 1
607: else
608: r2 = nil
609: end
610: if r2
611: r0 = r2
612: else
613: if has_terminal?('\G[\x2a-\x5b]', true, index)
614: r3 = true
615: @index += 1
616: else
617: r3 = nil
618: end
619: if r3
620: r0 = r3
621: else
622: if has_terminal?('\G[\x5d-\x7e]', true, index)
623: r4 = true
624: @index += 1
625: else
626: r4 = nil
627: end
628: if r4
629: r0 = r4
630: else
631: @index = i0
632: r0 = nil
633: end
634: end
635: end
636: end
637:
638: node_cache[:ctext][start_index] = r0
639:
640: r0
641: end
# File lib/mail/parsers/rfc2822.rb, line 3214
3214: def _nt_date
3215: start_index = index
3216: if node_cache[:date].has_key?(index)
3217: cached = node_cache[:date][index]
3218: if cached
3219: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3220: @index = cached.interval.end
3221: end
3222: return cached
3223: end
3224:
3225: i0, s0 = index, []
3226: r1 = _nt_day
3227: s0 << r1
3228: if r1
3229: r2 = _nt_month
3230: s0 << r2
3231: if r2
3232: r3 = _nt_year
3233: s0 << r3
3234: end
3235: end
3236: if s0.last
3237: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3238: r0.extend(Date0)
3239: else
3240: @index = i0
3241: r0 = nil
3242: end
3243:
3244: node_cache[:date][start_index] = r0
3245:
3246: r0
3247: end
# File lib/mail/parsers/rfc2822.rb, line 2977
2977: def _nt_date_time
2978: start_index = index
2979: if node_cache[:date_time].has_key?(index)
2980: cached = node_cache[:date_time][index]
2981: if cached
2982: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2983: @index = cached.interval.end
2984: end
2985: return cached
2986: end
2987:
2988: i0, s0 = index, []
2989: i2, s2 = index, []
2990: r3 = _nt_day_of_week
2991: s2 << r3
2992: if r3
2993: if has_terminal?(",", false, index)
2994: r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2995: @index += 1
2996: else
2997: terminal_parse_failure(",")
2998: r4 = nil
2999: end
3000: s2 << r4
3001: end
3002: if s2.last
3003: r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3004: r2.extend(DateTime0)
3005: else
3006: @index = i2
3007: r2 = nil
3008: end
3009: if r2
3010: r1 = r2
3011: else
3012: r1 = instantiate_node(SyntaxNode,input, index...index)
3013: end
3014: s0 << r1
3015: if r1
3016: r5 = _nt_date
3017: s0 << r5
3018: if r5
3019: r6 = _nt_FWS
3020: s0 << r6
3021: if r6
3022: r7 = _nt_time
3023: s0 << r7
3024: if r7
3025: r9 = _nt_CFWS
3026: if r9
3027: r8 = r9
3028: else
3029: r8 = instantiate_node(SyntaxNode,input, index...index)
3030: end
3031: s0 << r8
3032: end
3033: end
3034: end
3035: end
3036: if s0.last
3037: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3038: r0.extend(DateTime1)
3039: else
3040: @index = i0
3041: r0 = nil
3042: end
3043:
3044: node_cache[:date_time][start_index] = r0
3045:
3046: r0
3047: end
# File lib/mail/parsers/rfc2822.rb, line 3538
3538: def _nt_day
3539: start_index = index
3540: if node_cache[:day].has_key?(index)
3541: cached = node_cache[:day][index]
3542: if cached
3543: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3544: @index = cached.interval.end
3545: end
3546: return cached
3547: end
3548:
3549: i0 = index
3550: i1, s1 = index, []
3551: r3 = _nt_FWS
3552: if r3
3553: r2 = r3
3554: else
3555: r2 = instantiate_node(SyntaxNode,input, index...index)
3556: end
3557: s1 << r2
3558: if r2
3559: r4 = _nt_DIGIT
3560: s1 << r4
3561: if r4
3562: r6 = _nt_DIGIT
3563: if r6
3564: r5 = r6
3565: else
3566: r5 = instantiate_node(SyntaxNode,input, index...index)
3567: end
3568: s1 << r5
3569: end
3570: end
3571: if s1.last
3572: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3573: r1.extend(Day0)
3574: else
3575: @index = i1
3576: r1 = nil
3577: end
3578: if r1
3579: r0 = r1
3580: else
3581: r7 = _nt_obs_day
3582: if r7
3583: r0 = r7
3584: else
3585: @index = i0
3586: r0 = nil
3587: end
3588: end
3589:
3590: node_cache[:day][start_index] = r0
3591:
3592: r0
3593: end
# File lib/mail/parsers/rfc2822.rb, line 3103
3103: def _nt_day_name
3104: start_index = index
3105: if node_cache[:day_name].has_key?(index)
3106: cached = node_cache[:day_name][index]
3107: if cached
3108: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3109: @index = cached.interval.end
3110: end
3111: return cached
3112: end
3113:
3114: i0 = index
3115: if has_terminal?("Mon", false, index)
3116: r1 = instantiate_node(SyntaxNode,input, index...(index + 3))
3117: @index += 3
3118: else
3119: terminal_parse_failure("Mon")
3120: r1 = nil
3121: end
3122: if r1
3123: r0 = r1
3124: else
3125: if has_terminal?("Tue", false, index)
3126: r2 = instantiate_node(SyntaxNode,input, index...(index + 3))
3127: @index += 3
3128: else
3129: terminal_parse_failure("Tue")
3130: r2 = nil
3131: end
3132: if r2
3133: r0 = r2
3134: else
3135: if has_terminal?("Wed", false, index)
3136: r3 = instantiate_node(SyntaxNode,input, index...(index + 3))
3137: @index += 3
3138: else
3139: terminal_parse_failure("Wed")
3140: r3 = nil
3141: end
3142: if r3
3143: r0 = r3
3144: else
3145: if has_terminal?("Thu", false, index)
3146: r4 = instantiate_node(SyntaxNode,input, index...(index + 3))
3147: @index += 3
3148: else
3149: terminal_parse_failure("Thu")
3150: r4 = nil
3151: end
3152: if r4
3153: r0 = r4
3154: else
3155: if has_terminal?("Fri", false, index)
3156: r5 = instantiate_node(SyntaxNode,input, index...(index + 3))
3157: @index += 3
3158: else
3159: terminal_parse_failure("Fri")
3160: r5 = nil
3161: end
3162: if r5
3163: r0 = r5
3164: else
3165: if has_terminal?("Sat", false, index)
3166: r6 = instantiate_node(SyntaxNode,input, index...(index + 3))
3167: @index += 3
3168: else
3169: terminal_parse_failure("Sat")
3170: r6 = nil
3171: end
3172: if r6
3173: r0 = r6
3174: else
3175: if has_terminal?("Sun", false, index)
3176: r7 = instantiate_node(SyntaxNode,input, index...(index + 3))
3177: @index += 3
3178: else
3179: terminal_parse_failure("Sun")
3180: r7 = nil
3181: end
3182: if r7
3183: r0 = r7
3184: else
3185: @index = i0
3186: r0 = nil
3187: end
3188: end
3189: end
3190: end
3191: end
3192: end
3193: end
3194:
3195: node_cache[:day_name][start_index] = r0
3196:
3197: r0
3198: end
# File lib/mail/parsers/rfc2822.rb, line 3055
3055: def _nt_day_of_week
3056: start_index = index
3057: if node_cache[:day_of_week].has_key?(index)
3058: cached = node_cache[:day_of_week][index]
3059: if cached
3060: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3061: @index = cached.interval.end
3062: end
3063: return cached
3064: end
3065:
3066: i0 = index
3067: i1, s1 = index, []
3068: r3 = _nt_FWS
3069: if r3
3070: r2 = r3
3071: else
3072: r2 = instantiate_node(SyntaxNode,input, index...index)
3073: end
3074: s1 << r2
3075: if r2
3076: r4 = _nt_day_name
3077: s1 << r4
3078: end
3079: if s1.last
3080: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3081: r1.extend(DayOfWeek0)
3082: else
3083: @index = i1
3084: r1 = nil
3085: end
3086: if r1
3087: r0 = r1
3088: else
3089: r5 = _nt_obs_day_of_week
3090: if r5
3091: r0 = r5
3092: else
3093: @index = i0
3094: r0 = nil
3095: end
3096: end
3097:
3098: node_cache[:day_of_week][start_index] = r0
3099:
3100: r0
3101: end
# File lib/mail/parsers/rfc2822.rb, line 1896
1896: def _nt_dcontent
1897: start_index = index
1898: if node_cache[:dcontent].has_key?(index)
1899: cached = node_cache[:dcontent][index]
1900: if cached
1901: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1902: @index = cached.interval.end
1903: end
1904: return cached
1905: end
1906:
1907: i0 = index
1908: r1 = _nt_dtext
1909: if r1
1910: r0 = r1
1911: else
1912: r2 = _nt_quoted_pair
1913: if r2
1914: r0 = r2
1915: else
1916: @index = i0
1917: r0 = nil
1918: end
1919: end
1920:
1921: node_cache[:dcontent][start_index] = r0
1922:
1923: r0
1924: end
# File lib/mail/parsers/rfc2822.rb, line 2611
2611: def _nt_display_name
2612: start_index = index
2613: if node_cache[:display_name].has_key?(index)
2614: cached = node_cache[:display_name][index]
2615: if cached
2616: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2617: @index = cached.interval.end
2618: end
2619: return cached
2620: end
2621:
2622: r0 = _nt_phrase
2623:
2624: node_cache[:display_name][start_index] = r0
2625:
2626: r0
2627: end
# File lib/mail/parsers/rfc2822.rb, line 2153
2153: def _nt_domain
2154: start_index = index
2155: if node_cache[:domain].has_key?(index)
2156: cached = node_cache[:domain][index]
2157: if cached
2158: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2159: @index = cached.interval.end
2160: end
2161: return cached
2162: end
2163:
2164: i0 = index
2165: r1 = _nt_dot_atom
2166: if r1
2167: r0 = r1
2168: else
2169: r2 = _nt_domain_literal
2170: if r2
2171: r0 = r2
2172: else
2173: r3 = _nt_obs_domain
2174: if r3
2175: r0 = r3
2176: else
2177: @index = i0
2178: r0 = nil
2179: end
2180: end
2181: end
2182:
2183: node_cache[:domain][start_index] = r0
2184:
2185: r0
2186: end
# File lib/mail/parsers/rfc2822.rb, line 1795
1795: def _nt_domain_literal
1796: start_index = index
1797: if node_cache[:domain_literal].has_key?(index)
1798: cached = node_cache[:domain_literal][index]
1799: if cached
1800: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1801: @index = cached.interval.end
1802: end
1803: return cached
1804: end
1805:
1806: i0, s0 = index, []
1807: r2 = _nt_CFWS
1808: if r2
1809: r1 = r2
1810: else
1811: r1 = instantiate_node(SyntaxNode,input, index...index)
1812: end
1813: s0 << r1
1814: if r1
1815: if has_terminal?("[", false, index)
1816: r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
1817: @index += 1
1818: else
1819: terminal_parse_failure("[")
1820: r3 = nil
1821: end
1822: s0 << r3
1823: if r3
1824: s4, i4 = [], index
1825: loop do
1826: i5, s5 = index, []
1827: r7 = _nt_FWS
1828: if r7
1829: r6 = r7
1830: else
1831: r6 = instantiate_node(SyntaxNode,input, index...index)
1832: end
1833: s5 << r6
1834: if r6
1835: r8 = _nt_dcontent
1836: s5 << r8
1837: end
1838: if s5.last
1839: r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
1840: r5.extend(DomainLiteral0)
1841: else
1842: @index = i5
1843: r5 = nil
1844: end
1845: if r5
1846: s4 << r5
1847: else
1848: break
1849: end
1850: end
1851: r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
1852: s0 << r4
1853: if r4
1854: r10 = _nt_FWS
1855: if r10
1856: r9 = r10
1857: else
1858: r9 = instantiate_node(SyntaxNode,input, index...index)
1859: end
1860: s0 << r9
1861: if r9
1862: if has_terminal?("]", false, index)
1863: r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
1864: @index += 1
1865: else
1866: terminal_parse_failure("]")
1867: r11 = nil
1868: end
1869: s0 << r11
1870: if r11
1871: r13 = _nt_CFWS
1872: if r13
1873: r12 = r13
1874: else
1875: r12 = instantiate_node(SyntaxNode,input, index...index)
1876: end
1877: s0 << r12
1878: end
1879: end
1880: end
1881: end
1882: end
1883: if s0.last
1884: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1885: r0.extend(DomainLiteral1)
1886: else
1887: @index = i0
1888: r0 = nil
1889: end
1890:
1891: node_cache[:domain_literal][start_index] = r0
1892:
1893: r0
1894: end
# File lib/mail/parsers/rfc2822.rb, line 1402
1402: def _nt_domain_text
1403: start_index = index
1404: if node_cache[:domain_text].has_key?(index)
1405: cached = node_cache[:domain_text][index]
1406: if cached
1407: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1408: @index = cached.interval.end
1409: end
1410: return cached
1411: end
1412:
1413: i0 = index
1414: i1, s1 = index, []
1415: r2 = _nt_DQUOTE
1416: s1 << r2
1417: if r2
1418: s3, i3 = [], index
1419: loop do
1420: i4, s4 = index, []
1421: r6 = _nt_FWS
1422: if r6
1423: r5 = r6
1424: else
1425: r5 = instantiate_node(SyntaxNode,input, index...index)
1426: end
1427: s4 << r5
1428: if r5
1429: r7 = _nt_quoted_domain
1430: s4 << r7
1431: end
1432: if s4.last
1433: r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
1434: r4.extend(DomainText0)
1435: else
1436: @index = i4
1437: r4 = nil
1438: end
1439: if r4
1440: s3 << r4
1441: else
1442: break
1443: end
1444: end
1445: if s3.empty?
1446: @index = i3
1447: r3 = nil
1448: else
1449: r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
1450: end
1451: s1 << r3
1452: if r3
1453: r9 = _nt_FWS
1454: if r9
1455: r8 = r9
1456: else
1457: r8 = instantiate_node(SyntaxNode,input, index...index)
1458: end
1459: s1 << r8
1460: if r8
1461: r10 = _nt_DQUOTE
1462: s1 << r10
1463: end
1464: end
1465: end
1466: if s1.last
1467: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1468: r1.extend(DomainText1)
1469: else
1470: @index = i1
1471: r1 = nil
1472: end
1473: if r1
1474: r0 = r1
1475: else
1476: s11, i11 = [], index
1477: loop do
1478: r12 = _nt_atext
1479: if r12
1480: s11 << r12
1481: else
1482: break
1483: end
1484: end
1485: if s11.empty?
1486: @index = i11
1487: r11 = nil
1488: else
1489: r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
1490: end
1491: if r11
1492: r0 = r11
1493: else
1494: @index = i0
1495: r0 = nil
1496: end
1497: end
1498:
1499: node_cache[:domain_text][start_index] = r0
1500:
1501: r0
1502: end
# File lib/mail/parsers/rfc2822.rb, line 1128
1128: def _nt_dot_atom
1129: start_index = index
1130: if node_cache[:dot_atom].has_key?(index)
1131: cached = node_cache[:dot_atom][index]
1132: if cached
1133: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1134: @index = cached.interval.end
1135: end
1136: return cached
1137: end
1138:
1139: i0, s0 = index, []
1140: r2 = _nt_CFWS
1141: if r2
1142: r1 = r2
1143: else
1144: r1 = instantiate_node(SyntaxNode,input, index...index)
1145: end
1146: s0 << r1
1147: if r1
1148: r3 = _nt_dot_atom_text
1149: s0 << r3
1150: if r3
1151: r5 = _nt_CFWS
1152: if r5
1153: r4 = r5
1154: else
1155: r4 = instantiate_node(SyntaxNode,input, index...index)
1156: end
1157: s0 << r4
1158: end
1159: end
1160: if s0.last
1161: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1162: r0.extend(DotAtom0)
1163: else
1164: @index = i0
1165: r0 = nil
1166: end
1167:
1168: node_cache[:dot_atom][start_index] = r0
1169:
1170: r0
1171: end
# File lib/mail/parsers/rfc2822.rb, line 1264
1264: def _nt_dot_atom_text
1265: start_index = index
1266: if node_cache[:dot_atom_text].has_key?(index)
1267: cached = node_cache[:dot_atom_text][index]
1268: if cached
1269: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1270: @index = cached.interval.end
1271: end
1272: return cached
1273: end
1274:
1275: s0, i0 = [], index
1276: loop do
1277: i1, s1 = index, []
1278: r2 = _nt_domain_text
1279: s1 << r2
1280: if r2
1281: if has_terminal?(".", false, index)
1282: r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
1283: @index += 1
1284: else
1285: terminal_parse_failure(".")
1286: r4 = nil
1287: end
1288: if r4
1289: r3 = r4
1290: else
1291: r3 = instantiate_node(SyntaxNode,input, index...index)
1292: end
1293: s1 << r3
1294: end
1295: if s1.last
1296: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1297: r1.extend(DotAtomText0)
1298: else
1299: @index = i1
1300: r1 = nil
1301: end
1302: if r1
1303: s0 << r1
1304: else
1305: break
1306: end
1307: end
1308: if s0.empty?
1309: @index = i0
1310: r0 = nil
1311: else
1312: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1313: end
1314:
1315: node_cache[:dot_atom_text][start_index] = r0
1316:
1317: r0
1318: end
# File lib/mail/parsers/rfc2822.rb, line 1926
1926: def _nt_dtext
1927: start_index = index
1928: if node_cache[:dtext].has_key?(index)
1929: cached = node_cache[:dtext][index]
1930: if cached
1931: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1932: @index = cached.interval.end
1933: end
1934: return cached
1935: end
1936:
1937: i0 = index
1938: r1 = _nt_NO_WS_CTL
1939: if r1
1940: r0 = r1
1941: else
1942: if has_terminal?('\G[\x21-\x5a]', true, index)
1943: r2 = true
1944: @index += 1
1945: else
1946: r2 = nil
1947: end
1948: if r2
1949: r0 = r2
1950: else
1951: if has_terminal?('\G[\x5e-\x7e]', true, index)
1952: r3 = true
1953: @index += 1
1954: else
1955: r3 = nil
1956: end
1957: if r3
1958: r0 = r3
1959: else
1960: @index = i0
1961: r0 = nil
1962: end
1963: end
1964: end
1965:
1966: node_cache[:dtext][start_index] = r0
1967:
1968: r0
1969: end
# File lib/mail/parsers/rfc2822.rb, line 2199
2199: def _nt_group
2200: start_index = index
2201: if node_cache[:group].has_key?(index)
2202: cached = node_cache[:group][index]
2203: if cached
2204: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2205: @index = cached.interval.end
2206: end
2207: return cached
2208: end
2209:
2210: i0, s0 = index, []
2211: r1 = _nt_display_name
2212: s0 << r1
2213: if r1
2214: if has_terminal?(":", false, index)
2215: r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
2216: @index += 1
2217: else
2218: terminal_parse_failure(":")
2219: r2 = nil
2220: end
2221: s0 << r2
2222: if r2
2223: i4 = index
2224: r5 = _nt_mailbox_list_group
2225: if r5
2226: r4 = r5
2227: else
2228: r6 = _nt_CFWS
2229: if r6
2230: r4 = r6
2231: else
2232: @index = i4
2233: r4 = nil
2234: end
2235: end
2236: if r4
2237: r3 = r4
2238: else
2239: r3 = instantiate_node(SyntaxNode,input, index...index)
2240: end
2241: s0 << r3
2242: if r3
2243: if has_terminal?(";", false, index)
2244: r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
2245: @index += 1
2246: else
2247: terminal_parse_failure(";")
2248: r7 = nil
2249: end
2250: s0 << r7
2251: if r7
2252: r9 = _nt_CFWS
2253: if r9
2254: r8 = r9
2255: else
2256: r8 = instantiate_node(SyntaxNode,input, index...index)
2257: end
2258: s0 << r8
2259: end
2260: end
2261: end
2262: end
2263: if s0.last
2264: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2265: r0.extend(Group0)
2266: else
2267: @index = i0
2268: r0 = nil
2269: end
2270:
2271: node_cache[:group][start_index] = r0
2272:
2273: r0
2274: end
# File lib/mail/parsers/rfc2822.rb, line 3740
3740: def _nt_hour
3741: start_index = index
3742: if node_cache[:hour].has_key?(index)
3743: cached = node_cache[:hour][index]
3744: if cached
3745: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3746: @index = cached.interval.end
3747: end
3748: return cached
3749: end
3750:
3751: i0 = index
3752: i1, s1 = index, []
3753: r2 = _nt_DIGIT
3754: s1 << r2
3755: if r2
3756: r3 = _nt_DIGIT
3757: s1 << r3
3758: end
3759: if s1.last
3760: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3761: r1.extend(Hour0)
3762: else
3763: @index = i1
3764: r1 = nil
3765: end
3766: if r1
3767: r0 = r1
3768: else
3769: r4 = _nt_obs_hour
3770: if r4
3771: r0 = r4
3772: else
3773: @index = i0
3774: r0 = nil
3775: end
3776: end
3777:
3778: node_cache[:hour][start_index] = r0
3779:
3780: r0
3781: end
# File lib/mail/parsers/rfc2822.rb, line 4664
4664: def _nt_id_left
4665: start_index = index
4666: if node_cache[:id_left].has_key?(index)
4667: cached = node_cache[:id_left][index]
4668: if cached
4669: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4670: @index = cached.interval.end
4671: end
4672: return cached
4673: end
4674:
4675: i0 = index
4676: r1 = _nt_message_id_text
4677: if r1
4678: r0 = r1
4679: else
4680: r2 = _nt_no_fold_quote
4681: if r2
4682: r0 = r2
4683: else
4684: r3 = _nt_obs_id_left
4685: if r3
4686: r0 = r3
4687: else
4688: @index = i0
4689: r0 = nil
4690: end
4691: end
4692: end
4693:
4694: node_cache[:id_left][start_index] = r0
4695:
4696: r0
4697: end
# File lib/mail/parsers/rfc2822.rb, line 4699
4699: def _nt_id_right
4700: start_index = index
4701: if node_cache[:id_right].has_key?(index)
4702: cached = node_cache[:id_right][index]
4703: if cached
4704: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4705: @index = cached.interval.end
4706: end
4707: return cached
4708: end
4709:
4710: i0 = index
4711: r1 = _nt_msg_id_dot_atom_text
4712: if r1
4713: r0 = r1
4714: else
4715: r2 = _nt_no_fold_literal
4716: if r2
4717: r0 = r2
4718: else
4719: r3 = _nt_obs_id_right
4720: if r3
4721: r0 = r3
4722: else
4723: @index = i0
4724: r0 = nil
4725: end
4726: end
4727: end
4728:
4729: node_cache[:id_right][start_index] = r0
4730:
4731: r0
4732: end
# File lib/mail/parsers/rfc2822.rb, line 4333
4333: def _nt_item_name
4334: start_index = index
4335: if node_cache[:item_name].has_key?(index)
4336: cached = node_cache[:item_name][index]
4337: if cached
4338: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4339: @index = cached.interval.end
4340: end
4341: return cached
4342: end
4343:
4344: i0, s0 = index, []
4345: r1 = _nt_ALPHA
4346: s0 << r1
4347: if r1
4348: s2, i2 = [], index
4349: loop do
4350: i3, s3 = index, []
4351: if has_terminal?("-", false, index)
4352: r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
4353: @index += 1
4354: else
4355: terminal_parse_failure("-")
4356: r5 = nil
4357: end
4358: if r5
4359: r4 = r5
4360: else
4361: r4 = instantiate_node(SyntaxNode,input, index...index)
4362: end
4363: s3 << r4
4364: if r4
4365: i6 = index
4366: r7 = _nt_ALPHA
4367: if r7
4368: r6 = r7
4369: else
4370: r8 = _nt_DIGIT
4371: if r8
4372: r6 = r8
4373: else
4374: @index = i6
4375: r6 = nil
4376: end
4377: end
4378: s3 << r6
4379: end
4380: if s3.last
4381: r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
4382: r3.extend(ItemName0)
4383: else
4384: @index = i3
4385: r3 = nil
4386: end
4387: if r3
4388: s2 << r3
4389: else
4390: break
4391: end
4392: end
4393: r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
4394: s0 << r2
4395: end
4396: if s0.last
4397: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4398: r0.extend(ItemName1)
4399: else
4400: @index = i0
4401: r0 = nil
4402: end
4403:
4404: node_cache[:item_name][start_index] = r0
4405:
4406: r0
4407: end
# File lib/mail/parsers/rfc2822.rb, line 4409
4409: def _nt_item_value
4410: start_index = index
4411: if node_cache[:item_value].has_key?(index)
4412: cached = node_cache[:item_value][index]
4413: if cached
4414: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4415: @index = cached.interval.end
4416: end
4417: return cached
4418: end
4419:
4420: i0 = index
4421: s1, i1 = [], index
4422: loop do
4423: r2 = _nt_angle_addr
4424: if r2
4425: s1 << r2
4426: else
4427: break
4428: end
4429: end
4430: if s1.empty?
4431: @index = i1
4432: r1 = nil
4433: else
4434: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
4435: end
4436: if r1
4437: r0 = r1
4438: else
4439: r3 = _nt_addr_spec
4440: if r3
4441: r0 = r3
4442: else
4443: r4 = _nt_atom
4444: if r4
4445: r0 = r4
4446: else
4447: r5 = _nt_domain
4448: if r5
4449: r0 = r5
4450: else
4451: r6 = _nt_msg_id
4452: if r6
4453: r0 = r6
4454: else
4455: @index = i0
4456: r0 = nil
4457: end
4458: end
4459: end
4460: end
4461: end
4462:
4463: node_cache[:item_value][start_index] = r0
4464:
4465: r0
4466: end
# File lib/mail/parsers/rfc2822.rb, line 1180
1180: def _nt_local_dot_atom
1181: start_index = index
1182: if node_cache[:local_dot_atom].has_key?(index)
1183: cached = node_cache[:local_dot_atom][index]
1184: if cached
1185: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1186: @index = cached.interval.end
1187: end
1188: return cached
1189: end
1190:
1191: i0, s0 = index, []
1192: r2 = _nt_CFWS
1193: if r2
1194: r1 = r2
1195: else
1196: r1 = instantiate_node(SyntaxNode,input, index...index)
1197: end
1198: s0 << r1
1199: if r1
1200: r3 = _nt_local_dot_atom_text
1201: s0 << r3
1202: if r3
1203: r5 = _nt_CFWS
1204: if r5
1205: r4 = r5
1206: else
1207: r4 = instantiate_node(SyntaxNode,input, index...index)
1208: end
1209: s0 << r4
1210: end
1211: end
1212: if s0.last
1213: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1214: r0.extend(LocalDotAtom0)
1215: else
1216: @index = i0
1217: r0 = nil
1218: end
1219:
1220: node_cache[:local_dot_atom][start_index] = r0
1221:
1222: r0
1223: end
# File lib/mail/parsers/rfc2822.rb, line 1326
1326: def _nt_local_dot_atom_text
1327: start_index = index
1328: if node_cache[:local_dot_atom_text].has_key?(index)
1329: cached = node_cache[:local_dot_atom_text][index]
1330: if cached
1331: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1332: @index = cached.interval.end
1333: end
1334: return cached
1335: end
1336:
1337: s0, i0 = [], index
1338: loop do
1339: i1, s1 = index, []
1340: s2, i2 = [], index
1341: loop do
1342: if has_terminal?(".", false, index)
1343: r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
1344: @index += 1
1345: else
1346: terminal_parse_failure(".")
1347: r3 = nil
1348: end
1349: if r3
1350: s2 << r3
1351: else
1352: break
1353: end
1354: end
1355: r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1356: s1 << r2
1357: if r2
1358: r4 = _nt_domain_text
1359: s1 << r4
1360: end
1361: if s1.last
1362: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1363: r1.extend(LocalDotAtomText0)
1364: else
1365: @index = i1
1366: r1 = nil
1367: end
1368: if r1
1369: s0 << r1
1370: else
1371: break
1372: end
1373: end
1374: if s0.empty?
1375: @index = i0
1376: r0 = nil
1377: else
1378: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1379: end
1380:
1381: node_cache[:local_dot_atom_text][start_index] = r0
1382:
1383: r0
1384: end
# File lib/mail/parsers/rfc2822.rb, line 2118
2118: def _nt_local_part
2119: start_index = index
2120: if node_cache[:local_part].has_key?(index)
2121: cached = node_cache[:local_part][index]
2122: if cached
2123: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2124: @index = cached.interval.end
2125: end
2126: return cached
2127: end
2128:
2129: i0 = index
2130: r1 = _nt_local_dot_atom
2131: if r1
2132: r0 = r1
2133: else
2134: r2 = _nt_quoted_string
2135: if r2
2136: r0 = r2
2137: else
2138: r3 = _nt_obs_local_part
2139: if r3
2140: r0 = r3
2141: else
2142: @index = i0
2143: r0 = nil
2144: end
2145: end
2146: end
2147:
2148: node_cache[:local_part][start_index] = r0
2149:
2150: r0
2151: end
# File lib/mail/parsers/rfc2822.rb, line 2769
2769: def _nt_mailbox
2770: start_index = index
2771: if node_cache[:mailbox].has_key?(index)
2772: cached = node_cache[:mailbox][index]
2773: if cached
2774: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2775: @index = cached.interval.end
2776: end
2777: return cached
2778: end
2779:
2780: i0 = index
2781: r1 = _nt_name_addr
2782: if r1
2783: r0 = r1
2784: else
2785: r2 = _nt_addr_spec
2786: if r2
2787: r0 = r2
2788: else
2789: @index = i0
2790: r0 = nil
2791: end
2792: end
2793:
2794: node_cache[:mailbox][start_index] = r0
2795:
2796: r0
2797: end
# File lib/mail/parsers/rfc2822.rb, line 2698
2698: def _nt_mailbox_list
2699: start_index = index
2700: if node_cache[:mailbox_list].has_key?(index)
2701: cached = node_cache[:mailbox_list][index]
2702: if cached
2703: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2704: @index = cached.interval.end
2705: end
2706: return cached
2707: end
2708:
2709: i0 = index
2710: i1, s1 = index, []
2711: r2 = _nt_mailbox
2712: s1 << r2
2713: if r2
2714: s3, i3 = [], index
2715: loop do
2716: i4, s4 = index, []
2717: if has_terminal?(",", false, index)
2718: r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
2719: @index += 1
2720: else
2721: terminal_parse_failure(",")
2722: r5 = nil
2723: end
2724: s4 << r5
2725: if r5
2726: r6 = _nt_mailbox
2727: s4 << r6
2728: end
2729: if s4.last
2730: r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
2731: r4.extend(MailboxList0)
2732: else
2733: @index = i4
2734: r4 = nil
2735: end
2736: if r4
2737: s3 << r4
2738: else
2739: break
2740: end
2741: end
2742: r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
2743: s1 << r3
2744: end
2745: if s1.last
2746: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2747: r1.extend(MailboxList1)
2748: else
2749: @index = i1
2750: r1 = nil
2751: end
2752: if r1
2753: r0 = r1
2754: else
2755: r7 = _nt_obs_mbox_list
2756: if r7
2757: r0 = r7
2758: else
2759: @index = i0
2760: r0 = nil
2761: end
2762: end
2763:
2764: node_cache[:mailbox_list][start_index] = r0
2765:
2766: r0
2767: end
# File lib/mail/parsers/rfc2822.rb, line 2282
2282: def _nt_mailbox_list_group
2283: start_index = index
2284: if node_cache[:mailbox_list_group].has_key?(index)
2285: cached = node_cache[:mailbox_list_group][index]
2286: if cached
2287: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2288: @index = cached.interval.end
2289: end
2290: return cached
2291: end
2292:
2293: r0 = _nt_mailbox_list
2294: r0.extend(MailboxListGroup0)
2295:
2296: node_cache[:mailbox_list_group][start_index] = r0
2297:
2298: r0
2299: end
# File lib/mail/parsers/rfc2822.rb, line 1225
1225: def _nt_message_id_text
1226: start_index = index
1227: if node_cache[:message_id_text].has_key?(index)
1228: cached = node_cache[:message_id_text][index]
1229: if cached
1230: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1231: @index = cached.interval.end
1232: end
1233: return cached
1234: end
1235:
1236: s0, i0 = [], index
1237: loop do
1238: r1 = _nt_mtext
1239: if r1
1240: s0 << r1
1241: else
1242: break
1243: end
1244: end
1245: if s0.empty?
1246: @index = i0
1247: r0 = nil
1248: else
1249: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1250: end
1251:
1252: node_cache[:message_id_text][start_index] = r0
1253:
1254: r0
1255: end
# File lib/mail/parsers/rfc2822.rb, line 4488
4488: def _nt_message_ids
4489: start_index = index
4490: if node_cache[:message_ids].has_key?(index)
4491: cached = node_cache[:message_ids][index]
4492: if cached
4493: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4494: @index = cached.interval.end
4495: end
4496: return cached
4497: end
4498:
4499: i0, s0 = index, []
4500: r1 = _nt_msg_id
4501: s0 << r1
4502: if r1
4503: s2, i2 = [], index
4504: loop do
4505: i3, s3 = index, []
4506: r4 = _nt_CFWS
4507: s3 << r4
4508: if r4
4509: r5 = _nt_msg_id
4510: s3 << r5
4511: end
4512: if s3.last
4513: r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
4514: r3.extend(MessageIds0)
4515: else
4516: @index = i3
4517: r3 = nil
4518: end
4519: if r3
4520: s2 << r3
4521: else
4522: break
4523: end
4524: end
4525: r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
4526: s0 << r2
4527: end
4528: if s0.last
4529: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4530: r0.extend(MessageIds1)
4531: else
4532: @index = i0
4533: r0 = nil
4534: end
4535:
4536: node_cache[:message_ids][start_index] = r0
4537:
4538: r0
4539: end
# File lib/mail/parsers/rfc2822.rb, line 3793
3793: def _nt_minute
3794: start_index = index
3795: if node_cache[:minute].has_key?(index)
3796: cached = node_cache[:minute][index]
3797: if cached
3798: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3799: @index = cached.interval.end
3800: end
3801: return cached
3802: end
3803:
3804: i0 = index
3805: i1, s1 = index, []
3806: r2 = _nt_DIGIT
3807: s1 << r2
3808: if r2
3809: r3 = _nt_DIGIT
3810: s1 << r3
3811: end
3812: if s1.last
3813: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3814: r1.extend(Minute0)
3815: else
3816: @index = i1
3817: r1 = nil
3818: end
3819: if r1
3820: r0 = r1
3821: else
3822: r4 = _nt_obs_minute
3823: if r4
3824: r0 = r4
3825: else
3826: @index = i0
3827: r0 = nil
3828: end
3829: end
3830:
3831: node_cache[:minute][start_index] = r0
3832:
3833: r0
3834: end
# File lib/mail/parsers/rfc2822.rb, line 3332
3332: def _nt_month
3333: start_index = index
3334: if node_cache[:month].has_key?(index)
3335: cached = node_cache[:month][index]
3336: if cached
3337: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3338: @index = cached.interval.end
3339: end
3340: return cached
3341: end
3342:
3343: i0 = index
3344: i1, s1 = index, []
3345: r2 = _nt_FWS
3346: s1 << r2
3347: if r2
3348: r3 = _nt_month_name
3349: s1 << r3
3350: if r3
3351: r4 = _nt_FWS
3352: s1 << r4
3353: end
3354: end
3355: if s1.last
3356: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3357: r1.extend(Month0)
3358: else
3359: @index = i1
3360: r1 = nil
3361: end
3362: if r1
3363: r0 = r1
3364: else
3365: r5 = _nt_obs_month
3366: if r5
3367: r0 = r5
3368: else
3369: @index = i0
3370: r0 = nil
3371: end
3372: end
3373:
3374: node_cache[:month][start_index] = r0
3375:
3376: r0
3377: end
# File lib/mail/parsers/rfc2822.rb, line 3379
3379: def _nt_month_name
3380: start_index = index
3381: if node_cache[:month_name].has_key?(index)
3382: cached = node_cache[:month_name][index]
3383: if cached
3384: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3385: @index = cached.interval.end
3386: end
3387: return cached
3388: end
3389:
3390: i0 = index
3391: if has_terminal?("Jan", false, index)
3392: r1 = instantiate_node(SyntaxNode,input, index...(index + 3))
3393: @index += 3
3394: else
3395: terminal_parse_failure("Jan")
3396: r1 = nil
3397: end
3398: if r1
3399: r0 = r1
3400: else
3401: if has_terminal?("Feb", false, index)
3402: r2 = instantiate_node(SyntaxNode,input, index...(index + 3))
3403: @index += 3
3404: else
3405: terminal_parse_failure("Feb")
3406: r2 = nil
3407: end
3408: if r2
3409: r0 = r2
3410: else
3411: if has_terminal?("Mar", false, index)
3412: r3 = instantiate_node(SyntaxNode,input, index...(index + 3))
3413: @index += 3
3414: else
3415: terminal_parse_failure("Mar")
3416: r3 = nil
3417: end
3418: if r3
3419: r0 = r3
3420: else
3421: if has_terminal?("Apr", false, index)
3422: r4 = instantiate_node(SyntaxNode,input, index...(index + 3))
3423: @index += 3
3424: else
3425: terminal_parse_failure("Apr")
3426: r4 = nil
3427: end
3428: if r4
3429: r0 = r4
3430: else
3431: if has_terminal?("May", false, index)
3432: r5 = instantiate_node(SyntaxNode,input, index...(index + 3))
3433: @index += 3
3434: else
3435: terminal_parse_failure("May")
3436: r5 = nil
3437: end
3438: if r5
3439: r0 = r5
3440: else
3441: if has_terminal?("Jun", false, index)
3442: r6 = instantiate_node(SyntaxNode,input, index...(index + 3))
3443: @index += 3
3444: else
3445: terminal_parse_failure("Jun")
3446: r6 = nil
3447: end
3448: if r6
3449: r0 = r6
3450: else
3451: if has_terminal?("Jul", false, index)
3452: r7 = instantiate_node(SyntaxNode,input, index...(index + 3))
3453: @index += 3
3454: else
3455: terminal_parse_failure("Jul")
3456: r7 = nil
3457: end
3458: if r7
3459: r0 = r7
3460: else
3461: if has_terminal?("Aug", false, index)
3462: r8 = instantiate_node(SyntaxNode,input, index...(index + 3))
3463: @index += 3
3464: else
3465: terminal_parse_failure("Aug")
3466: r8 = nil
3467: end
3468: if r8
3469: r0 = r8
3470: else
3471: if has_terminal?("Sep", false, index)
3472: r9 = instantiate_node(SyntaxNode,input, index...(index + 3))
3473: @index += 3
3474: else
3475: terminal_parse_failure("Sep")
3476: r9 = nil
3477: end
3478: if r9
3479: r0 = r9
3480: else
3481: if has_terminal?("Oct", false, index)
3482: r10 = instantiate_node(SyntaxNode,input, index...(index + 3))
3483: @index += 3
3484: else
3485: terminal_parse_failure("Oct")
3486: r10 = nil
3487: end
3488: if r10
3489: r0 = r10
3490: else
3491: if has_terminal?("Nov", false, index)
3492: r11 = instantiate_node(SyntaxNode,input, index...(index + 3))
3493: @index += 3
3494: else
3495: terminal_parse_failure("Nov")
3496: r11 = nil
3497: end
3498: if r11
3499: r0 = r11
3500: else
3501: if has_terminal?("Dec", false, index)
3502: r12 = instantiate_node(SyntaxNode,input, index...(index + 3))
3503: @index += 3
3504: else
3505: terminal_parse_failure("Dec")
3506: r12 = nil
3507: end
3508: if r12
3509: r0 = r12
3510: else
3511: @index = i0
3512: r0 = nil
3513: end
3514: end
3515: end
3516: end
3517: end
3518: end
3519: end
3520: end
3521: end
3522: end
3523: end
3524: end
3525:
3526: node_cache[:month_name][start_index] = r0
3527:
3528: r0
3529: end
# File lib/mail/parsers/rfc2822.rb, line 4548
4548: def _nt_msg_id
4549: start_index = index
4550: if node_cache[:msg_id].has_key?(index)
4551: cached = node_cache[:msg_id][index]
4552: if cached
4553: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4554: @index = cached.interval.end
4555: end
4556: return cached
4557: end
4558:
4559: i0, s0 = index, []
4560: r2 = _nt_CFWS
4561: if r2
4562: r1 = r2
4563: else
4564: r1 = instantiate_node(SyntaxNode,input, index...index)
4565: end
4566: s0 << r1
4567: if r1
4568: if has_terminal?("<", false, index)
4569: r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
4570: @index += 1
4571: else
4572: terminal_parse_failure("<")
4573: r3 = nil
4574: end
4575: s0 << r3
4576: if r3
4577: r4 = _nt_msg_id_value
4578: s0 << r4
4579: if r4
4580: if has_terminal?(">", false, index)
4581: r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
4582: @index += 1
4583: else
4584: terminal_parse_failure(">")
4585: r5 = nil
4586: end
4587: s0 << r5
4588: if r5
4589: r7 = _nt_CFWS
4590: if r7
4591: r6 = r7
4592: else
4593: r6 = instantiate_node(SyntaxNode,input, index...index)
4594: end
4595: s0 << r6
4596: end
4597: end
4598: end
4599: end
4600: if s0.last
4601: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4602: r0.extend(MsgId0)
4603: else
4604: @index = i0
4605: r0 = nil
4606: end
4607:
4608: node_cache[:msg_id][start_index] = r0
4609:
4610: r0
4611: end
# File lib/mail/parsers/rfc2822.rb, line 4915
4915: def _nt_msg_id_atext
4916: start_index = index
4917: if node_cache[:msg_id_atext].has_key?(index)
4918: cached = node_cache[:msg_id_atext][index]
4919: if cached
4920: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4921: @index = cached.interval.end
4922: end
4923: return cached
4924: end
4925:
4926: i0 = index
4927: r1 = _nt_ALPHA
4928: if r1
4929: r0 = r1
4930: else
4931: r2 = _nt_DIGIT
4932: if r2
4933: r0 = r2
4934: else
4935: if has_terminal?("!", false, index)
4936: r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
4937: @index += 1
4938: else
4939: terminal_parse_failure("!")
4940: r3 = nil
4941: end
4942: if r3
4943: r0 = r3
4944: else
4945: if has_terminal?("#", false, index)
4946: r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
4947: @index += 1
4948: else
4949: terminal_parse_failure("#")
4950: r4 = nil
4951: end
4952: if r4
4953: r0 = r4
4954: else
4955: if has_terminal?("$", false, index)
4956: r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
4957: @index += 1
4958: else
4959: terminal_parse_failure("$")
4960: r5 = nil
4961: end
4962: if r5
4963: r0 = r5
4964: else
4965: if has_terminal?("%", false, index)
4966: r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
4967: @index += 1
4968: else
4969: terminal_parse_failure("%")
4970: r6 = nil
4971: end
4972: if r6
4973: r0 = r6
4974: else
4975: if has_terminal?("&", false, index)
4976: r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
4977: @index += 1
4978: else
4979: terminal_parse_failure("&")
4980: r7 = nil
4981: end
4982: if r7
4983: r0 = r7
4984: else
4985: if has_terminal?("'", false, index)
4986: r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
4987: @index += 1
4988: else
4989: terminal_parse_failure("'")
4990: r8 = nil
4991: end
4992: if r8
4993: r0 = r8
4994: else
4995: if has_terminal?("*", false, index)
4996: r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
4997: @index += 1
4998: else
4999: terminal_parse_failure("*")
5000: r9 = nil
5001: end
5002: if r9
5003: r0 = r9
5004: else
5005: if has_terminal?("+", false, index)
5006: r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
5007: @index += 1
5008: else
5009: terminal_parse_failure("+")
5010: r10 = nil
5011: end
5012: if r10
5013: r0 = r10
5014: else
5015: if has_terminal?("-", false, index)
5016: r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
5017: @index += 1
5018: else
5019: terminal_parse_failure("-")
5020: r11 = nil
5021: end
5022: if r11
5023: r0 = r11
5024: else
5025: if has_terminal?("/", false, index)
5026: r12 = instantiate_node(SyntaxNode,input, index...(index + 1))
5027: @index += 1
5028: else
5029: terminal_parse_failure("/")
5030: r12 = nil
5031: end
5032: if r12
5033: r0 = r12
5034: else
5035: if has_terminal?("=", false, index)
5036: r13 = instantiate_node(SyntaxNode,input, index...(index + 1))
5037: @index += 1
5038: else
5039: terminal_parse_failure("=")
5040: r13 = nil
5041: end
5042: if r13
5043: r0 = r13
5044: else
5045: if has_terminal?("?", false, index)
5046: r14 = instantiate_node(SyntaxNode,input, index...(index + 1))
5047: @index += 1
5048: else
5049: terminal_parse_failure("?")
5050: r14 = nil
5051: end
5052: if r14
5053: r0 = r14
5054: else
5055: if has_terminal?("^", false, index)
5056: r15 = instantiate_node(SyntaxNode,input, index...(index + 1))
5057: @index += 1
5058: else
5059: terminal_parse_failure("^")
5060: r15 = nil
5061: end
5062: if r15
5063: r0 = r15
5064: else
5065: if has_terminal?("_", false, index)
5066: r16 = instantiate_node(SyntaxNode,input, index...(index + 1))
5067: @index += 1
5068: else
5069: terminal_parse_failure("_")
5070: r16 = nil
5071: end
5072: if r16
5073: r0 = r16
5074: else
5075: if has_terminal?("`", false, index)
5076: r17 = instantiate_node(SyntaxNode,input, index...(index + 1))
5077: @index += 1
5078: else
5079: terminal_parse_failure("`")
5080: r17 = nil
5081: end
5082: if r17
5083: r0 = r17
5084: else
5085: if has_terminal?("{", false, index)
5086: r18 = instantiate_node(SyntaxNode,input, index...(index + 1))
5087: @index += 1
5088: else
5089: terminal_parse_failure("{")
5090: r18 = nil
5091: end
5092: if r18
5093: r0 = r18
5094: else
5095: if has_terminal?("|", false, index)
5096: r19 = instantiate_node(SyntaxNode,input, index...(index + 1))
5097: @index += 1
5098: else
5099: terminal_parse_failure("|")
5100: r19 = nil
5101: end
5102: if r19
5103: r0 = r19
5104: else
5105: if has_terminal?("}", false, index)
5106: r20 = instantiate_node(SyntaxNode,input, index...(index + 1))
5107: @index += 1
5108: else
5109: terminal_parse_failure("}")
5110: r20 = nil
5111: end
5112: if r20
5113: r0 = r20
5114: else
5115: if has_terminal?("~", false, index)
5116: r21 = instantiate_node(SyntaxNode,input, index...(index + 1))
5117: @index += 1
5118: else
5119: terminal_parse_failure("~")
5120: r21 = nil
5121: end
5122: if r21
5123: r0 = r21
5124: else
5125: if has_terminal?("@", false, index)
5126: r22 = instantiate_node(SyntaxNode,input, index...(index + 1))
5127: @index += 1
5128: else
5129: terminal_parse_failure("@")
5130: r22 = nil
5131: end
5132: if r22
5133: r0 = r22
5134: else
5135: @index = i0
5136: r0 = nil
5137: end
5138: end
5139: end
5140: end
5141: end
5142: end
5143: end
5144: end
5145: end
5146: end
5147: end
5148: end
5149: end
5150: end
5151: end
5152: end
5153: end
5154: end
5155: end
5156: end
5157: end
5158: end
5159:
5160: node_cache[:msg_id_atext][start_index] = r0
5161:
5162: r0
5163: end
# File lib/mail/parsers/rfc2822.rb, line 4813
4813: def _nt_msg_id_domain_text
4814: start_index = index
4815: if node_cache[:msg_id_domain_text].has_key?(index)
4816: cached = node_cache[:msg_id_domain_text][index]
4817: if cached
4818: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4819: @index = cached.interval.end
4820: end
4821: return cached
4822: end
4823:
4824: i0 = index
4825: i1, s1 = index, []
4826: r2 = _nt_DQUOTE
4827: s1 << r2
4828: if r2
4829: s3, i3 = [], index
4830: loop do
4831: i4, s4 = index, []
4832: r6 = _nt_FWS
4833: if r6
4834: r5 = r6
4835: else
4836: r5 = instantiate_node(SyntaxNode,input, index...index)
4837: end
4838: s4 << r5
4839: if r5
4840: r7 = _nt_quoted_domain
4841: s4 << r7
4842: end
4843: if s4.last
4844: r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
4845: r4.extend(MsgIdDomainText0)
4846: else
4847: @index = i4
4848: r4 = nil
4849: end
4850: if r4
4851: s3 << r4
4852: else
4853: break
4854: end
4855: end
4856: if s3.empty?
4857: @index = i3
4858: r3 = nil
4859: else
4860: r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
4861: end
4862: s1 << r3
4863: if r3
4864: r9 = _nt_FWS
4865: if r9
4866: r8 = r9
4867: else
4868: r8 = instantiate_node(SyntaxNode,input, index...index)
4869: end
4870: s1 << r8
4871: if r8
4872: r10 = _nt_DQUOTE
4873: s1 << r10
4874: end
4875: end
4876: end
4877: if s1.last
4878: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
4879: r1.extend(MsgIdDomainText1)
4880: else
4881: @index = i1
4882: r1 = nil
4883: end
4884: if r1
4885: r0 = r1
4886: else
4887: s11, i11 = [], index
4888: loop do
4889: r12 = _nt_msg_id_atext
4890: if r12
4891: s11 << r12
4892: else
4893: break
4894: end
4895: end
4896: if s11.empty?
4897: @index = i11
4898: r11 = nil
4899: else
4900: r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
4901: end
4902: if r11
4903: r0 = r11
4904: else
4905: @index = i0
4906: r0 = nil
4907: end
4908: end
4909:
4910: node_cache[:msg_id_domain_text][start_index] = r0
4911:
4912: r0
4913: end
# File lib/mail/parsers/rfc2822.rb, line 4741
4741: def _nt_msg_id_dot_atom_text
4742: start_index = index
4743: if node_cache[:msg_id_dot_atom_text].has_key?(index)
4744: cached = node_cache[:msg_id_dot_atom_text][index]
4745: if cached
4746: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4747: @index = cached.interval.end
4748: end
4749: return cached
4750: end
4751:
4752: s0, i0 = [], index
4753: loop do
4754: i1, s1 = index, []
4755: r2 = _nt_msg_id_domain_text
4756: s1 << r2
4757: if r2
4758: if has_terminal?(".", false, index)
4759: r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
4760: @index += 1
4761: else
4762: terminal_parse_failure(".")
4763: r4 = nil
4764: end
4765: if r4
4766: r3 = r4
4767: else
4768: r3 = instantiate_node(SyntaxNode,input, index...index)
4769: end
4770: s1 << r3
4771: end
4772: if s1.last
4773: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
4774: r1.extend(MsgIdDotAtomText0)
4775: else
4776: @index = i1
4777: r1 = nil
4778: end
4779: if r1
4780: s0 << r1
4781: else
4782: break
4783: end
4784: end
4785: if s0.empty?
4786: @index = i0
4787: r0 = nil
4788: else
4789: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4790: end
4791:
4792: node_cache[:msg_id_dot_atom_text][start_index] = r0
4793:
4794: r0
4795: end
# File lib/mail/parsers/rfc2822.rb, line 4623
4623: def _nt_msg_id_value
4624: start_index = index
4625: if node_cache[:msg_id_value].has_key?(index)
4626: cached = node_cache[:msg_id_value][index]
4627: if cached
4628: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4629: @index = cached.interval.end
4630: end
4631: return cached
4632: end
4633:
4634: i0, s0 = index, []
4635: r1 = _nt_id_left
4636: s0 << r1
4637: if r1
4638: if has_terminal?("@", false, index)
4639: r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
4640: @index += 1
4641: else
4642: terminal_parse_failure("@")
4643: r2 = nil
4644: end
4645: s0 << r2
4646: if r2
4647: r3 = _nt_id_right
4648: s0 << r3
4649: end
4650: end
4651: if s0.last
4652: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4653: r0.extend(MsgIdValue0)
4654: else
4655: @index = i0
4656: r0 = nil
4657: end
4658:
4659: node_cache[:msg_id_value][start_index] = r0
4660:
4661: r0
4662: end
# File lib/mail/parsers/rfc2822.rb, line 1009
1009: def _nt_mtext
1010: start_index = index
1011: if node_cache[:mtext].has_key?(index)
1012: cached = node_cache[:mtext][index]
1013: if cached
1014: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1015: @index = cached.interval.end
1016: end
1017: return cached
1018: end
1019:
1020: s0, i0 = [], index
1021: loop do
1022: i1 = index
1023: r2 = _nt_atext
1024: if r2
1025: r1 = r2
1026: else
1027: if has_terminal?(".", false, index)
1028: r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
1029: @index += 1
1030: else
1031: terminal_parse_failure(".")
1032: r3 = nil
1033: end
1034: if r3
1035: r1 = r3
1036: else
1037: @index = i1
1038: r1 = nil
1039: end
1040: end
1041: if r1
1042: s0 << r1
1043: else
1044: break
1045: end
1046: end
1047: if s0.empty?
1048: @index = i0
1049: r0 = nil
1050: else
1051: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1052: end
1053:
1054: node_cache[:mtext][start_index] = r0
1055:
1056: r0
1057: end
# File lib/mail/parsers/rfc2822.rb, line 2639
2639: def _nt_name_addr
2640: start_index = index
2641: if node_cache[:name_addr].has_key?(index)
2642: cached = node_cache[:name_addr][index]
2643: if cached
2644: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2645: @index = cached.interval.end
2646: end
2647: return cached
2648: end
2649:
2650: i0 = index
2651: i1, s1 = index, []
2652: r2 = _nt_display_name
2653: s1 << r2
2654: if r2
2655: r3 = _nt_angle_addr
2656: s1 << r3
2657: end
2658: if s1.last
2659: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2660: r1.extend(NameAddr0)
2661: else
2662: @index = i1
2663: r1 = nil
2664: end
2665: if r1
2666: r0 = r1
2667: else
2668: r4 = _nt_angle_addr
2669: if r4
2670: r0 = r4
2671: else
2672: @index = i0
2673: r0 = nil
2674: end
2675: end
2676:
2677: node_cache[:name_addr][start_index] = r0
2678:
2679: r0
2680: end
# File lib/mail/parsers/rfc2822.rb, line 4203
4203: def _nt_name_val_list
4204: start_index = index
4205: if node_cache[:name_val_list].has_key?(index)
4206: cached = node_cache[:name_val_list][index]
4207: if cached
4208: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4209: @index = cached.interval.end
4210: end
4211: return cached
4212: end
4213:
4214: i0, s0 = index, []
4215: r2 = _nt_CFWS
4216: if r2
4217: r1 = r2
4218: else
4219: r1 = instantiate_node(SyntaxNode,input, index...index)
4220: end
4221: s0 << r1
4222: if r1
4223: i3, s3 = index, []
4224: r4 = _nt_name_val_pair
4225: s3 << r4
4226: if r4
4227: s5, i5 = [], index
4228: loop do
4229: i6, s6 = index, []
4230: r7 = _nt_CFWS
4231: s6 << r7
4232: if r7
4233: r8 = _nt_name_val_pair
4234: s6 << r8
4235: end
4236: if s6.last
4237: r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
4238: r6.extend(NameValList0)
4239: else
4240: @index = i6
4241: r6 = nil
4242: end
4243: if r6
4244: s5 << r6
4245: else
4246: break
4247: end
4248: end
4249: r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
4250: s3 << r5
4251: end
4252: if s3.last
4253: r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
4254: r3.extend(NameValList1)
4255: else
4256: @index = i3
4257: r3 = nil
4258: end
4259: s0 << r3
4260: end
4261: if s0.last
4262: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4263: r0.extend(NameValList2)
4264: else
4265: @index = i0
4266: r0 = nil
4267: end
4268:
4269: node_cache[:name_val_list][start_index] = r0
4270:
4271: r0
4272: end
# File lib/mail/parsers/rfc2822.rb, line 4288
4288: def _nt_name_val_pair
4289: start_index = index
4290: if node_cache[:name_val_pair].has_key?(index)
4291: cached = node_cache[:name_val_pair][index]
4292: if cached
4293: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4294: @index = cached.interval.end
4295: end
4296: return cached
4297: end
4298:
4299: i0, s0 = index, []
4300: r1 = _nt_item_name
4301: s0 << r1
4302: if r1
4303: r2 = _nt_CFWS
4304: s0 << r2
4305: if r2
4306: r3 = _nt_item_value
4307: s0 << r3
4308: end
4309: end
4310: if s0.last
4311: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4312: r0.extend(NameValPair0)
4313: else
4314: @index = i0
4315: r0 = nil
4316: end
4317:
4318: node_cache[:name_val_pair][start_index] = r0
4319:
4320: r0
4321: end
# File lib/mail/parsers/rfc2822.rb, line 5239
5239: def _nt_no_fold_literal
5240: start_index = index
5241: if node_cache[:no_fold_literal].has_key?(index)
5242: cached = node_cache[:no_fold_literal][index]
5243: if cached
5244: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
5245: @index = cached.interval.end
5246: end
5247: return cached
5248: end
5249:
5250: i0, s0 = index, []
5251: if has_terminal?("[", false, index)
5252: r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
5253: @index += 1
5254: else
5255: terminal_parse_failure("[")
5256: r1 = nil
5257: end
5258: s0 << r1
5259: if r1
5260: s2, i2 = [], index
5261: loop do
5262: i3 = index
5263: r4 = _nt_dtext
5264: if r4
5265: r3 = r4
5266: else
5267: r5 = _nt_quoted_pair
5268: if r5
5269: r3 = r5
5270: else
5271: @index = i3
5272: r3 = nil
5273: end
5274: end
5275: if r3
5276: s2 << r3
5277: else
5278: break
5279: end
5280: end
5281: if s2.empty?
5282: @index = i2
5283: r2 = nil
5284: else
5285: r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
5286: end
5287: s0 << r2
5288: if r2
5289: if has_terminal?("]", false, index)
5290: r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
5291: @index += 1
5292: else
5293: terminal_parse_failure("]")
5294: r6 = nil
5295: end
5296: s0 << r6
5297: end
5298: end
5299: if s0.last
5300: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
5301: r0.extend(NoFoldLiteral0)
5302: else
5303: @index = i0
5304: r0 = nil
5305: end
5306:
5307: node_cache[:no_fold_literal][start_index] = r0
5308:
5309: r0
5310: end
# File lib/mail/parsers/rfc2822.rb, line 5175
5175: def _nt_no_fold_quote
5176: start_index = index
5177: if node_cache[:no_fold_quote].has_key?(index)
5178: cached = node_cache[:no_fold_quote][index]
5179: if cached
5180: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
5181: @index = cached.interval.end
5182: end
5183: return cached
5184: end
5185:
5186: i0, s0 = index, []
5187: r1 = _nt_DQUOTE
5188: s0 << r1
5189: if r1
5190: s2, i2 = [], index
5191: loop do
5192: i3 = index
5193: r4 = _nt_qtext
5194: if r4
5195: r3 = r4
5196: else
5197: r5 = _nt_quoted_pair
5198: if r5
5199: r3 = r5
5200: else
5201: @index = i3
5202: r3 = nil
5203: end
5204: end
5205: if r3
5206: s2 << r3
5207: else
5208: break
5209: end
5210: end
5211: if s2.empty?
5212: @index = i2
5213: r2 = nil
5214: else
5215: r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
5216: end
5217: s0 << r2
5218: if r2
5219: r6 = _nt_DQUOTE
5220: s0 << r6
5221: end
5222: end
5223: if s0.last
5224: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
5225: r0.extend(NoFoldQuote0)
5226: else
5227: @index = i0
5228: r0 = nil
5229: end
5230:
5231: node_cache[:no_fold_quote][start_index] = r0
5232:
5233: r0
5234: end
# File lib/mail/parsers/rfc2822.rb, line 4030
4030: def _nt_path
4031: start_index = index
4032: if node_cache[:path].has_key?(index)
4033: cached = node_cache[:path][index]
4034: if cached
4035: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4036: @index = cached.interval.end
4037: end
4038: return cached
4039: end
4040:
4041: i0 = index
4042: i1, s1 = index, []
4043: r3 = _nt_CFWS
4044: if r3
4045: r2 = r3
4046: else
4047: r2 = instantiate_node(SyntaxNode,input, index...index)
4048: end
4049: s1 << r2
4050: if r2
4051: if has_terminal?("<", false, index)
4052: r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
4053: @index += 1
4054: else
4055: terminal_parse_failure("<")
4056: r4 = nil
4057: end
4058: s1 << r4
4059: if r4
4060: i5 = index
4061: r7 = _nt_CFWS
4062: if r7
4063: r6 = r7
4064: else
4065: r6 = instantiate_node(SyntaxNode,input, index...index)
4066: end
4067: if r6
4068: r5 = r6
4069: else
4070: r8 = _nt_addr_spec
4071: if r8
4072: r5 = r8
4073: else
4074: @index = i5
4075: r5 = nil
4076: end
4077: end
4078: s1 << r5
4079: if r5
4080: if has_terminal?(">", false, index)
4081: r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
4082: @index += 1
4083: else
4084: terminal_parse_failure(">")
4085: r9 = nil
4086: end
4087: s1 << r9
4088: if r9
4089: r11 = _nt_CFWS
4090: if r11
4091: r10 = r11
4092: else
4093: r10 = instantiate_node(SyntaxNode,input, index...index)
4094: end
4095: s1 << r10
4096: end
4097: end
4098: end
4099: end
4100: if s1.last
4101: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
4102: r1.extend(Path0)
4103: else
4104: @index = i1
4105: r1 = nil
4106: end
4107: if r1
4108: r0 = r1
4109: else
4110: r12 = _nt_obs_path
4111: if r12
4112: r0 = r12
4113: else
4114: @index = i0
4115: r0 = nil
4116: end
4117: end
4118:
4119: node_cache[:path][start_index] = r0
4120:
4121: r0
4122: end
# File lib/mail/parsers/rfc2822.rb, line 1624
1624: def _nt_phrase
1625: start_index = index
1626: if node_cache[:phrase].has_key?(index)
1627: cached = node_cache[:phrase][index]
1628: if cached
1629: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1630: @index = cached.interval.end
1631: end
1632: return cached
1633: end
1634:
1635: i0 = index
1636: r1 = _nt_obs_phrase
1637: if r1
1638: r0 = r1
1639: else
1640: s2, i2 = [], index
1641: loop do
1642: r3 = _nt_word
1643: if r3
1644: s2 << r3
1645: else
1646: break
1647: end
1648: end
1649: if s2.empty?
1650: @index = i2
1651: r2 = nil
1652: else
1653: r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1654: end
1655: if r2
1656: r0 = r2
1657: else
1658: @index = i0
1659: r0 = nil
1660: end
1661: end
1662:
1663: node_cache[:phrase][start_index] = r0
1664:
1665: r0
1666: end
# File lib/mail/parsers/rfc2822.rb, line 1714
1714: def _nt_phrase_list
1715: start_index = index
1716: if node_cache[:phrase_list].has_key?(index)
1717: cached = node_cache[:phrase_list][index]
1718: if cached
1719: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1720: @index = cached.interval.end
1721: end
1722: return cached
1723: end
1724:
1725: i0, s0 = index, []
1726: r1 = _nt_phrase
1727: s0 << r1
1728: if r1
1729: s2, i2 = [], index
1730: loop do
1731: i3, s3 = index, []
1732: if has_terminal?(",", false, index)
1733: r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
1734: @index += 1
1735: else
1736: terminal_parse_failure(",")
1737: r4 = nil
1738: end
1739: s3 << r4
1740: if r4
1741: s5, i5 = [], index
1742: loop do
1743: r6 = _nt_FWS
1744: if r6
1745: s5 << r6
1746: else
1747: break
1748: end
1749: end
1750: r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
1751: s3 << r5
1752: if r5
1753: r7 = _nt_phrase
1754: s3 << r7
1755: end
1756: end
1757: if s3.last
1758: r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
1759: r3.extend(PhraseList0)
1760: else
1761: @index = i3
1762: r3 = nil
1763: end
1764: if r3
1765: s2 << r3
1766: else
1767: break
1768: end
1769: end
1770: r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1771: s0 << r2
1772: end
1773: if s0.last
1774: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1775: r0.extend(PhraseList1)
1776: else
1777: @index = i0
1778: r0 = nil
1779: end
1780:
1781: node_cache[:phrase_list][start_index] = r0
1782:
1783: r0
1784: end
# File lib/mail/parsers/rfc2822.rb, line 2416
2416: def _nt_qcontent
2417: start_index = index
2418: if node_cache[:qcontent].has_key?(index)
2419: cached = node_cache[:qcontent][index]
2420: if cached
2421: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2422: @index = cached.interval.end
2423: end
2424: return cached
2425: end
2426:
2427: i0 = index
2428: r1 = _nt_qtext
2429: if r1
2430: r0 = r1
2431: else
2432: r2 = _nt_quoted_pair
2433: if r2
2434: r0 = r2
2435: else
2436: @index = i0
2437: r0 = nil
2438: end
2439: end
2440:
2441: node_cache[:qcontent][start_index] = r0
2442:
2443: r0
2444: end
# File lib/mail/parsers/rfc2822.rb, line 1559
1559: def _nt_qdcontent
1560: start_index = index
1561: if node_cache[:qdcontent].has_key?(index)
1562: cached = node_cache[:qdcontent][index]
1563: if cached
1564: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1565: @index = cached.interval.end
1566: end
1567: return cached
1568: end
1569:
1570: i0 = index
1571: r1 = _nt_NO_WS_CTL
1572: if r1
1573: r0 = r1
1574: else
1575: if has_terminal?('\G[\x21]', true, index)
1576: r2 = true
1577: @index += 1
1578: else
1579: r2 = nil
1580: end
1581: if r2
1582: r0 = r2
1583: else
1584: if has_terminal?('\G[\x23-\x45]', true, index)
1585: r3 = true
1586: @index += 1
1587: else
1588: r3 = nil
1589: end
1590: if r3
1591: r0 = r3
1592: else
1593: if has_terminal?('\G[\x47-\x5b]', true, index)
1594: r4 = true
1595: @index += 1
1596: else
1597: r4 = nil
1598: end
1599: if r4
1600: r0 = r4
1601: else
1602: if has_terminal?('\G[\x5d-\x7e]', true, index)
1603: r5 = true
1604: @index += 1
1605: else
1606: r5 = nil
1607: end
1608: if r5
1609: r0 = r5
1610: else
1611: @index = i0
1612: r0 = nil
1613: end
1614: end
1615: end
1616: end
1617: end
1618:
1619: node_cache[:qdcontent][start_index] = r0
1620:
1621: r0
1622: end
# File lib/mail/parsers/rfc2822.rb, line 2501
2501: def _nt_qtext
2502: start_index = index
2503: if node_cache[:qtext].has_key?(index)
2504: cached = node_cache[:qtext][index]
2505: if cached
2506: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2507: @index = cached.interval.end
2508: end
2509: return cached
2510: end
2511:
2512: i0 = index
2513: r1 = _nt_NO_WS_CTL
2514: if r1
2515: r0 = r1
2516: else
2517: if has_terminal?('\G[\x21]', true, index)
2518: r2 = true
2519: @index += 1
2520: else
2521: r2 = nil
2522: end
2523: if r2
2524: r0 = r2
2525: else
2526: if has_terminal?('\G[\x23-\x5b]', true, index)
2527: r3 = true
2528: @index += 1
2529: else
2530: r3 = nil
2531: end
2532: if r3
2533: r0 = r3
2534: else
2535: if has_terminal?('\G[\x5d-\x7e]', true, index)
2536: r4 = true
2537: @index += 1
2538: else
2539: r4 = nil
2540: end
2541: if r4
2542: r0 = r4
2543: else
2544: @index = i0
2545: r0 = nil
2546: end
2547: end
2548: end
2549: end
2550:
2551: node_cache[:qtext][start_index] = r0
2552:
2553: r0
2554: end
# File lib/mail/parsers/rfc2822.rb, line 1510
1510: def _nt_quoted_domain
1511: start_index = index
1512: if node_cache[:quoted_domain].has_key?(index)
1513: cached = node_cache[:quoted_domain][index]
1514: if cached
1515: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1516: @index = cached.interval.end
1517: end
1518: return cached
1519: end
1520:
1521: i0 = index
1522: r1 = _nt_qdcontent
1523: if r1
1524: r0 = r1
1525: else
1526: i2, s2 = index, []
1527: if has_terminal?("\\", false, index)
1528: r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
1529: @index += 1
1530: else
1531: terminal_parse_failure("\\")
1532: r3 = nil
1533: end
1534: s2 << r3
1535: if r3
1536: r4 = _nt_text
1537: s2 << r4
1538: end
1539: if s2.last
1540: r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1541: r2.extend(QuotedDomain0)
1542: else
1543: @index = i2
1544: r2 = nil
1545: end
1546: if r2
1547: r0 = r2
1548: else
1549: @index = i0
1550: r0 = nil
1551: end
1552: end
1553:
1554: node_cache[:quoted_domain][start_index] = r0
1555:
1556: r0
1557: end
# File lib/mail/parsers/rfc2822.rb, line 2452
2452: def _nt_quoted_pair
2453: start_index = index
2454: if node_cache[:quoted_pair].has_key?(index)
2455: cached = node_cache[:quoted_pair][index]
2456: if cached
2457: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2458: @index = cached.interval.end
2459: end
2460: return cached
2461: end
2462:
2463: i0 = index
2464: i1, s1 = index, []
2465: if has_terminal?("\\", false, index)
2466: r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
2467: @index += 1
2468: else
2469: terminal_parse_failure("\\")
2470: r2 = nil
2471: end
2472: s1 << r2
2473: if r2
2474: r3 = _nt_text
2475: s1 << r3
2476: end
2477: if s1.last
2478: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2479: r1.extend(QuotedPair0)
2480: else
2481: @index = i1
2482: r1 = nil
2483: end
2484: if r1
2485: r0 = r1
2486: else
2487: r4 = _nt_obs_qp
2488: if r4
2489: r0 = r4
2490: else
2491: @index = i0
2492: r0 = nil
2493: end
2494: end
2495:
2496: node_cache[:quoted_pair][start_index] = r0
2497:
2498: r0
2499: end
# File lib/mail/parsers/rfc2822.rb, line 2322
2322: def _nt_quoted_string
2323: start_index = index
2324: if node_cache[:quoted_string].has_key?(index)
2325: cached = node_cache[:quoted_string][index]
2326: if cached
2327: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2328: @index = cached.interval.end
2329: end
2330: return cached
2331: end
2332:
2333: i0, s0 = index, []
2334: r2 = _nt_CFWS
2335: if r2
2336: r1 = r2
2337: else
2338: r1 = instantiate_node(SyntaxNode,input, index...index)
2339: end
2340: s0 << r1
2341: if r1
2342: r3 = _nt_DQUOTE
2343: s0 << r3
2344: if r3
2345: s4, i4 = [], index
2346: loop do
2347: i5, s5 = index, []
2348: r7 = _nt_FWS
2349: if r7
2350: r6 = r7
2351: else
2352: r6 = instantiate_node(SyntaxNode,input, index...index)
2353: end
2354: s5 << r6
2355: if r6
2356: r8 = _nt_qcontent
2357: s5 << r8
2358: end
2359: if s5.last
2360: r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
2361: r5.extend(QuotedString0)
2362: else
2363: @index = i5
2364: r5 = nil
2365: end
2366: if r5
2367: s4 << r5
2368: else
2369: break
2370: end
2371: end
2372: if s4.empty?
2373: @index = i4
2374: r4 = nil
2375: else
2376: r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
2377: end
2378: s0 << r4
2379: if r4
2380: r10 = _nt_FWS
2381: if r10
2382: r9 = r10
2383: else
2384: r9 = instantiate_node(SyntaxNode,input, index...index)
2385: end
2386: s0 << r9
2387: if r9
2388: r11 = _nt_DQUOTE
2389: s0 << r11
2390: if r11
2391: r13 = _nt_CFWS
2392: if r13
2393: r12 = r13
2394: else
2395: r12 = instantiate_node(SyntaxNode,input, index...index)
2396: end
2397: s0 << r12
2398: end
2399: end
2400: end
2401: end
2402: end
2403: if s0.last
2404: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2405: r0.extend(QuotedString1)
2406: else
2407: @index = i0
2408: r0 = nil
2409: end
2410:
2411: node_cache[:quoted_string][start_index] = r0
2412:
2413: r0
2414: end
# File lib/mail/parsers/rfc2822.rb, line 4138
4138: def _nt_received
4139: start_index = index
4140: if node_cache[:received].has_key?(index)
4141: cached = node_cache[:received][index]
4142: if cached
4143: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4144: @index = cached.interval.end
4145: end
4146: return cached
4147: end
4148:
4149: i0, s0 = index, []
4150: r1 = _nt_name_val_list
4151: s0 << r1
4152: if r1
4153: if has_terminal?(";", false, index)
4154: r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
4155: @index += 1
4156: else
4157: terminal_parse_failure(";")
4158: r2 = nil
4159: end
4160: s0 << r2
4161: if r2
4162: r3 = _nt_date_time
4163: s0 << r3
4164: if r3
4165: r4 = _nt_CRLF
4166: s0 << r4
4167: end
4168: end
4169: end
4170: if s0.last
4171: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4172: r0.extend(Received0)
4173: else
4174: @index = i0
4175: r0 = nil
4176: end
4177:
4178: node_cache[:received][start_index] = r0
4179:
4180: r0
4181: end
# File lib/mail/parsers/rfc2822.rb, line 3996
3996: def _nt_return
3997: start_index = index
3998: if node_cache[:return].has_key?(index)
3999: cached = node_cache[:return][index]
4000: if cached
4001: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4002: @index = cached.interval.end
4003: end
4004: return cached
4005: end
4006:
4007: i0, s0 = index, []
4008: r1 = _nt_path
4009: s0 << r1
4010: if r1
4011: r2 = _nt_CRLF
4012: s0 << r2
4013: end
4014: if s0.last
4015: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4016: r0.extend(Return0)
4017: else
4018: @index = i0
4019: r0 = nil
4020: end
4021:
4022: node_cache[:return][start_index] = r0
4023:
4024: r0
4025: end
# File lib/mail/parsers/rfc2822.rb, line 3846
3846: def _nt_second
3847: start_index = index
3848: if node_cache[:second].has_key?(index)
3849: cached = node_cache[:second][index]
3850: if cached
3851: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3852: @index = cached.interval.end
3853: end
3854: return cached
3855: end
3856:
3857: i0 = index
3858: i1, s1 = index, []
3859: r2 = _nt_DIGIT
3860: s1 << r2
3861: if r2
3862: r3 = _nt_DIGIT
3863: s1 << r3
3864: end
3865: if s1.last
3866: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3867: r1.extend(Second0)
3868: else
3869: @index = i1
3870: r1 = nil
3871: end
3872: if r1
3873: r0 = r1
3874: else
3875: r4 = _nt_obs_second
3876: if r4
3877: r0 = r4
3878: else
3879: @index = i0
3880: r0 = nil
3881: end
3882: end
3883:
3884: node_cache[:second][start_index] = r0
3885:
3886: r0
3887: end
# File lib/mail/parsers/rfc2822.rb, line 431
431: def _nt_specials
432: start_index = index
433: if node_cache[:specials].has_key?(index)
434: cached = node_cache[:specials][index]
435: if cached
436: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
437: @index = cached.interval.end
438: end
439: return cached
440: end
441:
442: i0 = index
443: if has_terminal?("(", false, index)
444: r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
445: @index += 1
446: else
447: terminal_parse_failure("(")
448: r1 = nil
449: end
450: if r1
451: r0 = r1
452: else
453: if has_terminal?(")", false, index)
454: r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
455: @index += 1
456: else
457: terminal_parse_failure(")")
458: r2 = nil
459: end
460: if r2
461: r0 = r2
462: else
463: if has_terminal?("<", false, index)
464: r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
465: @index += 1
466: else
467: terminal_parse_failure("<")
468: r3 = nil
469: end
470: if r3
471: r0 = r3
472: else
473: if has_terminal?(">", false, index)
474: r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
475: @index += 1
476: else
477: terminal_parse_failure(">")
478: r4 = nil
479: end
480: if r4
481: r0 = r4
482: else
483: if has_terminal?("[", false, index)
484: r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
485: @index += 1
486: else
487: terminal_parse_failure("[")
488: r5 = nil
489: end
490: if r5
491: r0 = r5
492: else
493: if has_terminal?("]", false, index)
494: r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
495: @index += 1
496: else
497: terminal_parse_failure("]")
498: r6 = nil
499: end
500: if r6
501: r0 = r6
502: else
503: if has_terminal?(":", false, index)
504: r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
505: @index += 1
506: else
507: terminal_parse_failure(":")
508: r7 = nil
509: end
510: if r7
511: r0 = r7
512: else
513: if has_terminal?(";", false, index)
514: r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
515: @index += 1
516: else
517: terminal_parse_failure(";")
518: r8 = nil
519: end
520: if r8
521: r0 = r8
522: else
523: if has_terminal?("@", false, index)
524: r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
525: @index += 1
526: else
527: terminal_parse_failure("@")
528: r9 = nil
529: end
530: if r9
531: r0 = r9
532: else
533: if has_terminal?('\', false, index)
534: r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
535: @index += 1
536: else
537: terminal_parse_failure('\')
538: r10 = nil
539: end
540: if r10
541: r0 = r10
542: else
543: if has_terminal?(",", false, index)
544: r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
545: @index += 1
546: else
547: terminal_parse_failure(",")
548: r11 = nil
549: end
550: if r11
551: r0 = r11
552: else
553: if has_terminal?(".", false, index)
554: r12 = instantiate_node(SyntaxNode,input, index...(index + 1))
555: @index += 1
556: else
557: terminal_parse_failure(".")
558: r12 = nil
559: end
560: if r12
561: r0 = r12
562: else
563: r13 = _nt_DQUOTE
564: if r13
565: r0 = r13
566: else
567: @index = i0
568: r0 = nil
569: end
570: end
571: end
572: end
573: end
574: end
575: end
576: end
577: end
578: end
579: end
580: end
581: end
582:
583: node_cache[:specials][start_index] = r0
584:
585: r0
586: end
# File lib/mail/parsers/rfc2822.rb, line 2556
2556: def _nt_text
2557: start_index = index
2558: if node_cache[:text].has_key?(index)
2559: cached = node_cache[:text][index]
2560: if cached
2561: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2562: @index = cached.interval.end
2563: end
2564: return cached
2565: end
2566:
2567: i0 = index
2568: if has_terminal?('\G[\x01-\x09]', true, index)
2569: r1 = true
2570: @index += 1
2571: else
2572: r1 = nil
2573: end
2574: if r1
2575: r0 = r1
2576: else
2577: if has_terminal?('\G[\x0b-\x0c]', true, index)
2578: r2 = true
2579: @index += 1
2580: else
2581: r2 = nil
2582: end
2583: if r2
2584: r0 = r2
2585: else
2586: if has_terminal?('\G[\x0e-\x7e]', true, index)
2587: r3 = true
2588: @index += 1
2589: else
2590: r3 = nil
2591: end
2592: if r3
2593: r0 = r3
2594: else
2595: r4 = _nt_obs_text
2596: if r4
2597: r0 = r4
2598: else
2599: @index = i0
2600: r0 = nil
2601: end
2602: end
2603: end
2604: end
2605:
2606: node_cache[:text][start_index] = r0
2607:
2608: r0
2609: end
# File lib/mail/parsers/rfc2822.rb, line 3609
3609: def _nt_time
3610: start_index = index
3611: if node_cache[:time].has_key?(index)
3612: cached = node_cache[:time][index]
3613: if cached
3614: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3615: @index = cached.interval.end
3616: end
3617: return cached
3618: end
3619:
3620: i0, s0 = index, []
3621: r1 = _nt_time_of_day
3622: s0 << r1
3623: if r1
3624: r2 = _nt_FWS
3625: s0 << r2
3626: if r2
3627: r3 = _nt_zone
3628: s0 << r3
3629: end
3630: end
3631: if s0.last
3632: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3633: r0.extend(Time0)
3634: else
3635: @index = i0
3636: r0 = nil
3637: end
3638:
3639: node_cache[:time][start_index] = r0
3640:
3641: r0
3642: end
# File lib/mail/parsers/rfc2822.rb, line 3661
3661: def _nt_time_of_day
3662: start_index = index
3663: if node_cache[:time_of_day].has_key?(index)
3664: cached = node_cache[:time_of_day][index]
3665: if cached
3666: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3667: @index = cached.interval.end
3668: end
3669: return cached
3670: end
3671:
3672: i0, s0 = index, []
3673: r1 = _nt_hour
3674: s0 << r1
3675: if r1
3676: if has_terminal?(":", false, index)
3677: r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
3678: @index += 1
3679: else
3680: terminal_parse_failure(":")
3681: r2 = nil
3682: end
3683: s0 << r2
3684: if r2
3685: r3 = _nt_minute
3686: s0 << r3
3687: if r3
3688: i5, s5 = index, []
3689: if has_terminal?(":", false, index)
3690: r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
3691: @index += 1
3692: else
3693: terminal_parse_failure(":")
3694: r6 = nil
3695: end
3696: s5 << r6
3697: if r6
3698: r7 = _nt_second
3699: s5 << r7
3700: end
3701: if s5.last
3702: r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
3703: r5.extend(TimeOfDay0)
3704: else
3705: @index = i5
3706: r5 = nil
3707: end
3708: if r5
3709: r4 = r5
3710: else
3711: r4 = instantiate_node(SyntaxNode,input, index...index)
3712: end
3713: s0 << r4
3714: end
3715: end
3716: end
3717: if s0.last
3718: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3719: r0.extend(TimeOfDay1)
3720: else
3721: @index = i0
3722: r0 = nil
3723: end
3724:
3725: node_cache[:time_of_day][start_index] = r0
3726:
3727: r0
3728: end
# File lib/mail/parsers/rfc2822.rb, line 1668
1668: def _nt_word
1669: start_index = index
1670: if node_cache[:word].has_key?(index)
1671: cached = node_cache[:word][index]
1672: if cached
1673: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1674: @index = cached.interval.end
1675: end
1676: return cached
1677: end
1678:
1679: i0 = index
1680: r1 = _nt_atom
1681: if r1
1682: r0 = r1
1683: else
1684: r2 = _nt_quoted_string
1685: if r2
1686: r0 = r2
1687: else
1688: @index = i0
1689: r0 = nil
1690: end
1691: end
1692:
1693: node_cache[:word][start_index] = r0
1694:
1695: r0
1696: end
# File lib/mail/parsers/rfc2822.rb, line 3267
3267: def _nt_year
3268: start_index = index
3269: if node_cache[:year].has_key?(index)
3270: cached = node_cache[:year][index]
3271: if cached
3272: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3273: @index = cached.interval.end
3274: end
3275: return cached
3276: end
3277:
3278: i0 = index
3279: i1, s1 = index, []
3280: r2 = _nt_DIGIT
3281: s1 << r2
3282: if r2
3283: r3 = _nt_DIGIT
3284: s1 << r3
3285: if r3
3286: r4 = _nt_DIGIT
3287: s1 << r4
3288: if r4
3289: r5 = _nt_DIGIT
3290: s1 << r5
3291: end
3292: end
3293: end
3294: if s1.last
3295: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3296: r1.extend(Year0)
3297: else
3298: @index = i1
3299: r1 = nil
3300: end
3301: if r1
3302: r0 = r1
3303: else
3304: r6 = _nt_obs_year
3305: if r6
3306: r0 = r6
3307: else
3308: @index = i0
3309: r0 = nil
3310: end
3311: end
3312:
3313: node_cache[:year][start_index] = r0
3314:
3315: r0
3316: end
# File lib/mail/parsers/rfc2822.rb, line 3907
3907: def _nt_zone
3908: start_index = index
3909: if node_cache[:zone].has_key?(index)
3910: cached = node_cache[:zone][index]
3911: if cached
3912: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3913: @index = cached.interval.end
3914: end
3915: return cached
3916: end
3917:
3918: i0 = index
3919: i1, s1 = index, []
3920: i2 = index
3921: if has_terminal?("+", false, index)
3922: r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
3923: @index += 1
3924: else
3925: terminal_parse_failure("+")
3926: r3 = nil
3927: end
3928: if r3
3929: r2 = r3
3930: else
3931: if has_terminal?("-", false, index)
3932: r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
3933: @index += 1
3934: else
3935: terminal_parse_failure("-")
3936: r4 = nil
3937: end
3938: if r4
3939: r2 = r4
3940: else
3941: @index = i2
3942: r2 = nil
3943: end
3944: end
3945: s1 << r2
3946: if r2
3947: r5 = _nt_DIGIT
3948: s1 << r5
3949: if r5
3950: r6 = _nt_DIGIT
3951: s1 << r6
3952: if r6
3953: r7 = _nt_DIGIT
3954: s1 << r7
3955: if r7
3956: r8 = _nt_DIGIT
3957: s1 << r8
3958: end
3959: end
3960: end
3961: end
3962: if s1.last
3963: r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3964: r1.extend(Zone0)
3965: else
3966: @index = i1
3967: r1 = nil
3968: end
3969: if r1
3970: r0 = r1
3971: else
3972: r9 = _nt_obs_zone
3973: if r9
3974: r0 = r9
3975: else
3976: @index = i0
3977: r0 = nil
3978: end
3979: end
3980:
3981: node_cache[:zone][start_index] = r0
3982:
3983: r0
3984: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.