otherinbox-mail 2.4.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (141) hide show
  1. data/CHANGELOG.rdoc +607 -0
  2. data/CONTRIBUTING.md +45 -0
  3. data/Dependencies.txt +3 -0
  4. data/Gemfile +26 -0
  5. data/Gemfile.lock +44 -0
  6. data/README.md +663 -0
  7. data/Rakefile +40 -0
  8. data/TODO.rdoc +9 -0
  9. data/lib/VERSION +4 -0
  10. data/lib/mail.rb +101 -0
  11. data/lib/mail/attachments_list.rb +104 -0
  12. data/lib/mail/body.rb +291 -0
  13. data/lib/mail/configuration.rb +75 -0
  14. data/lib/mail/core_extensions/nil.rb +17 -0
  15. data/lib/mail/core_extensions/object.rb +13 -0
  16. data/lib/mail/core_extensions/shell_escape.rb +56 -0
  17. data/lib/mail/core_extensions/smtp.rb +25 -0
  18. data/lib/mail/core_extensions/string.rb +33 -0
  19. data/lib/mail/core_extensions/string/access.rb +145 -0
  20. data/lib/mail/core_extensions/string/multibyte.rb +78 -0
  21. data/lib/mail/elements.rb +14 -0
  22. data/lib/mail/elements/address.rb +306 -0
  23. data/lib/mail/elements/address_list.rb +74 -0
  24. data/lib/mail/elements/content_disposition_element.rb +30 -0
  25. data/lib/mail/elements/content_location_element.rb +25 -0
  26. data/lib/mail/elements/content_transfer_encoding_element.rb +24 -0
  27. data/lib/mail/elements/content_type_element.rb +35 -0
  28. data/lib/mail/elements/date_time_element.rb +26 -0
  29. data/lib/mail/elements/envelope_from_element.rb +34 -0
  30. data/lib/mail/elements/message_ids_element.rb +29 -0
  31. data/lib/mail/elements/mime_version_element.rb +26 -0
  32. data/lib/mail/elements/phrase_list.rb +21 -0
  33. data/lib/mail/elements/received_element.rb +30 -0
  34. data/lib/mail/encodings.rb +274 -0
  35. data/lib/mail/encodings/7bit.rb +31 -0
  36. data/lib/mail/encodings/8bit.rb +31 -0
  37. data/lib/mail/encodings/base64.rb +33 -0
  38. data/lib/mail/encodings/binary.rb +31 -0
  39. data/lib/mail/encodings/quoted_printable.rb +38 -0
  40. data/lib/mail/encodings/transfer_encoding.rb +58 -0
  41. data/lib/mail/envelope.rb +35 -0
  42. data/lib/mail/field.rb +234 -0
  43. data/lib/mail/field_list.rb +33 -0
  44. data/lib/mail/fields.rb +35 -0
  45. data/lib/mail/fields/bcc_field.rb +56 -0
  46. data/lib/mail/fields/cc_field.rb +55 -0
  47. data/lib/mail/fields/comments_field.rb +41 -0
  48. data/lib/mail/fields/common/address_container.rb +16 -0
  49. data/lib/mail/fields/common/common_address.rb +125 -0
  50. data/lib/mail/fields/common/common_date.rb +42 -0
  51. data/lib/mail/fields/common/common_field.rb +51 -0
  52. data/lib/mail/fields/common/common_message_id.rb +44 -0
  53. data/lib/mail/fields/common/parameter_hash.rb +58 -0
  54. data/lib/mail/fields/content_description_field.rb +19 -0
  55. data/lib/mail/fields/content_disposition_field.rb +69 -0
  56. data/lib/mail/fields/content_id_field.rb +63 -0
  57. data/lib/mail/fields/content_location_field.rb +42 -0
  58. data/lib/mail/fields/content_transfer_encoding_field.rb +50 -0
  59. data/lib/mail/fields/content_type_field.rb +198 -0
  60. data/lib/mail/fields/date_field.rb +57 -0
  61. data/lib/mail/fields/from_field.rb +55 -0
  62. data/lib/mail/fields/in_reply_to_field.rb +55 -0
  63. data/lib/mail/fields/keywords_field.rb +44 -0
  64. data/lib/mail/fields/message_id_field.rb +83 -0
  65. data/lib/mail/fields/mime_version_field.rb +53 -0
  66. data/lib/mail/fields/optional_field.rb +13 -0
  67. data/lib/mail/fields/received_field.rb +75 -0
  68. data/lib/mail/fields/references_field.rb +55 -0
  69. data/lib/mail/fields/reply_to_field.rb +55 -0
  70. data/lib/mail/fields/resent_bcc_field.rb +55 -0
  71. data/lib/mail/fields/resent_cc_field.rb +55 -0
  72. data/lib/mail/fields/resent_date_field.rb +35 -0
  73. data/lib/mail/fields/resent_from_field.rb +55 -0
  74. data/lib/mail/fields/resent_message_id_field.rb +34 -0
  75. data/lib/mail/fields/resent_sender_field.rb +62 -0
  76. data/lib/mail/fields/resent_to_field.rb +55 -0
  77. data/lib/mail/fields/return_path_field.rb +65 -0
  78. data/lib/mail/fields/sender_field.rb +67 -0
  79. data/lib/mail/fields/structured_field.rb +51 -0
  80. data/lib/mail/fields/subject_field.rb +16 -0
  81. data/lib/mail/fields/to_field.rb +55 -0
  82. data/lib/mail/fields/unstructured_field.rb +191 -0
  83. data/lib/mail/header.rb +265 -0
  84. data/lib/mail/indifferent_hash.rb +146 -0
  85. data/lib/mail/mail.rb +255 -0
  86. data/lib/mail/matchers/has_sent_mail.rb +124 -0
  87. data/lib/mail/message.rb +2059 -0
  88. data/lib/mail/multibyte.rb +42 -0
  89. data/lib/mail/multibyte/chars.rb +474 -0
  90. data/lib/mail/multibyte/exceptions.rb +8 -0
  91. data/lib/mail/multibyte/unicode.rb +392 -0
  92. data/lib/mail/multibyte/utils.rb +60 -0
  93. data/lib/mail/network.rb +14 -0
  94. data/lib/mail/network/delivery_methods/exim.rb +53 -0
  95. data/lib/mail/network/delivery_methods/file_delivery.rb +40 -0
  96. data/lib/mail/network/delivery_methods/sendmail.rb +62 -0
  97. data/lib/mail/network/delivery_methods/smtp.rb +153 -0
  98. data/lib/mail/network/delivery_methods/smtp_connection.rb +74 -0
  99. data/lib/mail/network/delivery_methods/test_mailer.rb +40 -0
  100. data/lib/mail/network/retriever_methods/base.rb +63 -0
  101. data/lib/mail/network/retriever_methods/imap.rb +168 -0
  102. data/lib/mail/network/retriever_methods/pop3.rb +140 -0
  103. data/lib/mail/network/retriever_methods/test_retriever.rb +47 -0
  104. data/lib/mail/parsers/address_lists.rb +64 -0
  105. data/lib/mail/parsers/address_lists.treetop +19 -0
  106. data/lib/mail/parsers/content_disposition.rb +535 -0
  107. data/lib/mail/parsers/content_disposition.treetop +46 -0
  108. data/lib/mail/parsers/content_location.rb +139 -0
  109. data/lib/mail/parsers/content_location.treetop +20 -0
  110. data/lib/mail/parsers/content_transfer_encoding.rb +162 -0
  111. data/lib/mail/parsers/content_transfer_encoding.treetop +20 -0
  112. data/lib/mail/parsers/content_type.rb +967 -0
  113. data/lib/mail/parsers/content_type.treetop +68 -0
  114. data/lib/mail/parsers/date_time.rb +114 -0
  115. data/lib/mail/parsers/date_time.treetop +11 -0
  116. data/lib/mail/parsers/envelope_from.rb +194 -0
  117. data/lib/mail/parsers/envelope_from.treetop +32 -0
  118. data/lib/mail/parsers/message_ids.rb +45 -0
  119. data/lib/mail/parsers/message_ids.treetop +15 -0
  120. data/lib/mail/parsers/mime_version.rb +144 -0
  121. data/lib/mail/parsers/mime_version.treetop +19 -0
  122. data/lib/mail/parsers/phrase_lists.rb +45 -0
  123. data/lib/mail/parsers/phrase_lists.treetop +15 -0
  124. data/lib/mail/parsers/received.rb +71 -0
  125. data/lib/mail/parsers/received.treetop +11 -0
  126. data/lib/mail/parsers/rfc2045.rb +464 -0
  127. data/lib/mail/parsers/rfc2045.treetop +36 -0
  128. data/lib/mail/parsers/rfc2822.rb +5341 -0
  129. data/lib/mail/parsers/rfc2822.treetop +410 -0
  130. data/lib/mail/parsers/rfc2822_obsolete.rb +3768 -0
  131. data/lib/mail/parsers/rfc2822_obsolete.treetop +241 -0
  132. data/lib/mail/part.rb +116 -0
  133. data/lib/mail/parts_list.rb +55 -0
  134. data/lib/mail/patterns.rb +34 -0
  135. data/lib/mail/utilities.rb +215 -0
  136. data/lib/mail/version.rb +24 -0
  137. data/lib/mail/version_specific/ruby_1_8.rb +98 -0
  138. data/lib/mail/version_specific/ruby_1_9.rb +113 -0
  139. data/lib/tasks/corpus.rake +125 -0
  140. data/lib/tasks/treetop.rake +10 -0
  141. metadata +253 -0
@@ -0,0 +1,410 @@
1
+ module Mail
2
+ grammar RFC2822
3
+
4
+ include RFC2822Obsolete
5
+
6
+ rule ALPHA
7
+ [a-zA-Z]
8
+ end
9
+
10
+ rule DIGIT
11
+ [0-9]
12
+ end
13
+
14
+ rule DQUOTE
15
+ '"'
16
+ end
17
+
18
+ rule LF
19
+ "\n"
20
+ end
21
+
22
+ rule CR
23
+ "\r"
24
+ end
25
+
26
+ rule CRLF
27
+ "\r\n"
28
+ end
29
+
30
+ rule WSP
31
+ [\x09\x20]
32
+ end
33
+
34
+ rule FWS # Folding white space
35
+ (WSP* CRLF WSP+) / (CRLF WSP+) / obs_FWS
36
+ end
37
+
38
+ rule CFWS
39
+ (FWS* comment)* FWS?
40
+ end
41
+
42
+ rule NO_WS_CTL
43
+ [\x01-\x08] / # US-ASCII control characters
44
+ [\x0B-\x0C] / # that do not include the
45
+ [\x0E-\x1F] / # carriage return, line feed,
46
+ [\x7f] # and white space characters
47
+ end
48
+
49
+ rule specials
50
+ "(" / ")" / # Special characters used in
51
+ "<" / ">" / # other parts of the syntax
52
+ "[" / "]" /
53
+ ":" / ";" /
54
+ "@" / '\\' /
55
+ "," / "." /
56
+ DQUOTE
57
+ end
58
+
59
+ rule ctext
60
+ NO_WS_CTL / # Non white space controls
61
+ [\x21-\x27] / # The rest of the US-ASCII
62
+ [\x2a-\x5b] / # characters not including "(",
63
+ [\x5d-\x7e] # ")", or "\"
64
+ end
65
+
66
+ rule ccontent
67
+ ctext / quoted_pair / comment
68
+ end
69
+
70
+ rule comment
71
+ "(" ( FWS? ccontent )* FWS? ")"
72
+ end
73
+
74
+ rule atext
75
+ ALPHA / DIGIT / # Any character except controls,
76
+ "!" / "#" / # SP, and specials.
77
+ "$" / "%" / # Used for atoms
78
+ "&" / "'" /
79
+ "*" / "+" /
80
+ "-" / "/" /
81
+ "=" / "?" /
82
+ "^" / "_" /
83
+ "`" / "{" /
84
+ "|" / "}" /
85
+ "~"
86
+ end
87
+
88
+ rule mtext
89
+ (atext / ".")+
90
+ end
91
+
92
+ rule atom
93
+ CFWS? atext+ CFWS?
94
+ end
95
+
96
+ rule dot_atom
97
+ CFWS? dot_atom_text CFWS?
98
+ end
99
+
100
+ rule local_dot_atom
101
+ CFWS? local_dot_atom_text CFWS?
102
+ end
103
+
104
+ rule message_id_text
105
+ mtext+
106
+ end
107
+
108
+ rule dot_atom_text
109
+ (domain_text "."?)+
110
+ end
111
+
112
+ rule local_dot_atom_text
113
+ ("."? domain_text)+
114
+ end
115
+
116
+ rule domain_text
117
+ (DQUOTE (FWS? quoted_domain)+ FWS? DQUOTE) / atext+
118
+ end
119
+
120
+ rule quoted_domain
121
+ qdcontent / "\\" text
122
+ end
123
+
124
+ rule qdcontent
125
+ NO_WS_CTL / # Non white space controls
126
+ [\x21] / # The rest of the US-ASCII
127
+ [\x23-\x45] / # characters not including "\"
128
+ [\x47-\x5b] / # or the "." or the
129
+ [\x5d-\x7e] # double quote character
130
+ end
131
+
132
+ rule phrase
133
+ obs_phrase / word+
134
+ end
135
+
136
+ rule word
137
+ atom / quoted_string
138
+ end
139
+
140
+ rule phrase_list
141
+ first_phrase:phrase other_phrases:("," FWS* phrase_value:phrase)*
142
+ end
143
+
144
+ rule domain_literal
145
+ CFWS? "[" (FWS? dcontent)* FWS? "]" CFWS?
146
+ end
147
+
148
+ rule dcontent
149
+ dtext / quoted_pair
150
+ end
151
+
152
+ rule dtext
153
+ NO_WS_CTL / # Non white space controls
154
+ [\x21-\x5a] / # The rest of the US-ASCII characters
155
+ [\x5e-\x7e] # not including "[", "]", or "\"
156
+ end
157
+
158
+ rule angle_addr
159
+ CFWS? "<" addr_spec ">" CFWS? / obs_angle_addr
160
+ end
161
+
162
+ rule addr_spec
163
+ (local_part "@" domain) / local_part
164
+ end
165
+
166
+ rule local_part
167
+ local_dot_atom / quoted_string / obs_local_part
168
+ end
169
+
170
+ rule domain
171
+ dot_atom / domain_literal / obs_domain
172
+ end
173
+
174
+ rule group
175
+ group_name:display_name ":" group_list:(mailbox_list_group / CFWS)? ";" CFWS?
176
+ end
177
+
178
+ rule mailbox_list_group
179
+ mailbox_list {
180
+ def addresses
181
+ [first_addr] + other_addr.elements.map { |o| o.addr_value }
182
+ end
183
+ }
184
+ end
185
+
186
+ rule quoted_string
187
+ CFWS? DQUOTE quoted_content:(FWS? qcontent)+ FWS? DQUOTE CFWS?
188
+ end
189
+
190
+ rule qcontent
191
+ qtext / quoted_pair
192
+ end
193
+
194
+ rule quoted_pair
195
+ ("\\" text) / obs_qp
196
+ end
197
+
198
+ rule qtext
199
+ NO_WS_CTL / # Non white space controls
200
+ [\x21] / # The rest of the US-ASCII
201
+ [\x23-\x5b] / # characters not including "\"
202
+ [\x5d-\x7e] # or the quote character
203
+ end
204
+
205
+ rule text
206
+ [\x01-\x09] / # Characters excluding CR and LF
207
+ [\x0b-\x0c] /
208
+ [\x0e-\x7e] /
209
+ obs_text
210
+ end
211
+
212
+ rule display_name
213
+ phrase
214
+ end
215
+
216
+ rule name_addr
217
+ display_name angle_addr / angle_addr
218
+ end
219
+
220
+ rule mailbox_list
221
+ (first_addr:mailbox other_addr:("," addr_value:mailbox)*) / obs_mbox_list
222
+ end
223
+
224
+ rule mailbox
225
+ name_addr / addr_spec
226
+ end
227
+
228
+ rule address
229
+ group {
230
+
231
+ def dig_comments(comments, elements)
232
+ elements.each { |elem|
233
+ if elem.respond_to?(:comment)
234
+ comments << elem.comment
235
+ end
236
+ dig_comments(comments, elem.elements) if elem.elements
237
+ }
238
+ end
239
+
240
+ def comments
241
+ comments = []
242
+ dig_comments(comments, elements)
243
+ comments
244
+ end
245
+
246
+ } /
247
+ mailbox {
248
+
249
+ def dig_comments(comments, elements)
250
+ elements.each { |elem|
251
+ if elem.respond_to?(:comment)
252
+ comments << elem.comment
253
+ end
254
+ dig_comments(comments, elem.elements) if elem.elements
255
+ }
256
+ end
257
+
258
+ def comments
259
+ comments = []
260
+ dig_comments(comments, elements)
261
+ comments
262
+ end
263
+
264
+ }
265
+ end
266
+
267
+ rule address_list
268
+ first_addr:address? other_addr:(FWS* "," FWS* addr_value:address?)*
269
+ end
270
+
271
+ rule date_time
272
+ ( day_of_week ",")? date FWS time CFWS?
273
+ end
274
+
275
+ rule day_of_week
276
+ (FWS? day_name) / obs_day_of_week
277
+ end
278
+
279
+ rule day_name
280
+ "Mon" / "Tue" / "Wed" / "Thu" /
281
+ "Fri" / "Sat" / "Sun"
282
+ end
283
+
284
+ rule date
285
+ day month year
286
+ end
287
+
288
+ rule year
289
+ DIGIT DIGIT DIGIT DIGIT / obs_year
290
+ end
291
+
292
+ rule month
293
+ (FWS month_name FWS) / obs_month
294
+ end
295
+
296
+ rule month_name
297
+ "Jan" / "Feb" / "Mar" / "Apr" /
298
+ "May" / "Jun" / "Jul" / "Aug" /
299
+ "Sep" / "Oct" / "Nov" / "Dec"
300
+ end
301
+
302
+ rule day
303
+ (FWS? DIGIT DIGIT?) / obs_day
304
+ end
305
+
306
+ rule time
307
+ time_of_day FWS zone
308
+ end
309
+
310
+ rule time_of_day
311
+ hour ":" minute ( ":" second )?
312
+ end
313
+
314
+ rule hour
315
+ DIGIT DIGIT / obs_hour
316
+ end
317
+
318
+ rule minute
319
+ DIGIT DIGIT / obs_minute
320
+ end
321
+
322
+ rule second
323
+ DIGIT DIGIT / obs_second
324
+ end
325
+
326
+ rule zone
327
+ (( "+" / "-" ) DIGIT DIGIT DIGIT DIGIT) / obs_zone
328
+ end
329
+
330
+ rule return
331
+ path CRLF
332
+ end
333
+
334
+ rule path
335
+ ((CFWS)? "<" ((CFWS)? / addr_spec) ">" (CFWS)?) / obs_path
336
+ end
337
+
338
+ rule received
339
+ name_val_list ";" date_time CRLF
340
+ end
341
+
342
+ rule name_val_list
343
+ (CFWS)? (name_val_pair (CFWS name_val_pair)*)
344
+ end
345
+
346
+ rule name_val_pair
347
+ item_name CFWS item_value
348
+ end
349
+
350
+ rule item_name
351
+ ALPHA (("-")? (ALPHA / DIGIT))*
352
+ end
353
+
354
+ rule item_value
355
+ (angle_addr)+ / addr_spec / atom / domain / msg_id
356
+ end
357
+
358
+ rule message_ids
359
+ first_msg_id:msg_id other_msg_ids:( CFWS msg_id_value:msg_id )*
360
+ end
361
+
362
+ rule msg_id
363
+ (CFWS)? "<" msg_id_value ">" (CFWS)?
364
+ end
365
+
366
+ rule msg_id_value
367
+ id_left "@" id_right
368
+ end
369
+
370
+ rule id_left
371
+ message_id_text / no_fold_quote / obs_id_left
372
+ end
373
+
374
+ rule id_right
375
+ msg_id_dot_atom_text / no_fold_literal / obs_id_right
376
+ end
377
+
378
+ rule msg_id_dot_atom_text
379
+ (msg_id_domain_text "."?)+
380
+ end
381
+
382
+ rule msg_id_domain_text
383
+ (DQUOTE (FWS? quoted_domain)+ FWS? DQUOTE) / msg_id_atext+
384
+ end
385
+
386
+ rule msg_id_atext
387
+ ALPHA / DIGIT / # Any character except controls,
388
+ "!" / "#" / # SP, and specials.
389
+ "$" / "%" / # Used for atoms
390
+ "&" / "'" /
391
+ "*" / "+" /
392
+ "-" / "/" /
393
+ "=" / "?" /
394
+ "^" / "_" /
395
+ "`" / "{" /
396
+ "|" / "}" /
397
+ "~" / "@"
398
+ end
399
+
400
+ rule no_fold_quote
401
+ DQUOTE (qtext / quoted_pair)+ DQUOTE
402
+ end
403
+
404
+ rule no_fold_literal
405
+ "[" (dtext / quoted_pair)+ "]"
406
+ end
407
+
408
+
409
+ end
410
+ end
@@ -0,0 +1,3768 @@
1
+ # Autogenerated from a Treetop grammar. Edits may be lost.
2
+
3
+
4
+ module Mail
5
+ module RFC2822Obsolete
6
+ include Treetop::Runtime
7
+
8
+ def root
9
+ @root ||= :obs_qp
10
+ end
11
+
12
+ module ObsQp0
13
+ end
14
+
15
+ def _nt_obs_qp
16
+ start_index = index
17
+ if node_cache[:obs_qp].has_key?(index)
18
+ cached = node_cache[:obs_qp][index]
19
+ if cached
20
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
21
+ @index = cached.interval.end
22
+ end
23
+ return cached
24
+ end
25
+
26
+ i0, s0 = index, []
27
+ if has_terminal?("\\", false, index)
28
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
29
+ @index += 1
30
+ else
31
+ terminal_parse_failure("\\")
32
+ r1 = nil
33
+ end
34
+ s0 << r1
35
+ if r1
36
+ if has_terminal?('\G[\\x00-\\x7F]', true, index)
37
+ r2 = true
38
+ @index += 1
39
+ else
40
+ r2 = nil
41
+ end
42
+ s0 << r2
43
+ end
44
+ if s0.last
45
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
46
+ r0.extend(ObsQp0)
47
+ else
48
+ @index = i0
49
+ r0 = nil
50
+ end
51
+
52
+ node_cache[:obs_qp][start_index] = r0
53
+
54
+ r0
55
+ end
56
+
57
+ module ObsText0
58
+ def obs_char
59
+ elements[0]
60
+ end
61
+
62
+ end
63
+
64
+ module ObsText1
65
+ end
66
+
67
+ def _nt_obs_text
68
+ start_index = index
69
+ if node_cache[:obs_text].has_key?(index)
70
+ cached = node_cache[:obs_text][index]
71
+ if cached
72
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
73
+ @index = cached.interval.end
74
+ end
75
+ return cached
76
+ end
77
+
78
+ i0, s0 = index, []
79
+ s1, i1 = [], index
80
+ loop do
81
+ r2 = _nt_LF
82
+ if r2
83
+ s1 << r2
84
+ else
85
+ break
86
+ end
87
+ end
88
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
89
+ s0 << r1
90
+ if r1
91
+ s3, i3 = [], index
92
+ loop do
93
+ r4 = _nt_CR
94
+ if r4
95
+ s3 << r4
96
+ else
97
+ break
98
+ end
99
+ end
100
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
101
+ s0 << r3
102
+ if r3
103
+ s5, i5 = [], index
104
+ loop do
105
+ i6, s6 = index, []
106
+ r7 = _nt_obs_char
107
+ s6 << r7
108
+ if r7
109
+ s8, i8 = [], index
110
+ loop do
111
+ r9 = _nt_LF
112
+ if r9
113
+ s8 << r9
114
+ else
115
+ break
116
+ end
117
+ end
118
+ r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
119
+ s6 << r8
120
+ if r8
121
+ s10, i10 = [], index
122
+ loop do
123
+ r11 = _nt_CR
124
+ if r11
125
+ s10 << r11
126
+ else
127
+ break
128
+ end
129
+ end
130
+ r10 = instantiate_node(SyntaxNode,input, i10...index, s10)
131
+ s6 << r10
132
+ end
133
+ end
134
+ if s6.last
135
+ r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
136
+ r6.extend(ObsText0)
137
+ else
138
+ @index = i6
139
+ r6 = nil
140
+ end
141
+ if r6
142
+ s5 << r6
143
+ else
144
+ break
145
+ end
146
+ end
147
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
148
+ s0 << r5
149
+ end
150
+ end
151
+ if s0.last
152
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
153
+ r0.extend(ObsText1)
154
+ else
155
+ @index = i0
156
+ r0 = nil
157
+ end
158
+
159
+ node_cache[:obs_text][start_index] = r0
160
+
161
+ r0
162
+ end
163
+
164
+ def _nt_obs_char
165
+ start_index = index
166
+ if node_cache[:obs_char].has_key?(index)
167
+ cached = node_cache[:obs_char][index]
168
+ if cached
169
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
170
+ @index = cached.interval.end
171
+ end
172
+ return cached
173
+ end
174
+
175
+ i0 = index
176
+ if has_terminal?('\G[\\x00-\\x09]', true, index)
177
+ r1 = true
178
+ @index += 1
179
+ else
180
+ r1 = nil
181
+ end
182
+ if r1
183
+ r0 = r1
184
+ else
185
+ if has_terminal?('\G[\\x0B-\\x0C]', true, index)
186
+ r2 = true
187
+ @index += 1
188
+ else
189
+ r2 = nil
190
+ end
191
+ if r2
192
+ r0 = r2
193
+ else
194
+ if has_terminal?('\G[\\x0E-\\x7F]', true, index)
195
+ r3 = true
196
+ @index += 1
197
+ else
198
+ r3 = nil
199
+ end
200
+ if r3
201
+ r0 = r3
202
+ else
203
+ @index = i0
204
+ r0 = nil
205
+ end
206
+ end
207
+ end
208
+
209
+ node_cache[:obs_char][start_index] = r0
210
+
211
+ r0
212
+ end
213
+
214
+ def _nt_obs_utext
215
+ start_index = index
216
+ if node_cache[:obs_utext].has_key?(index)
217
+ cached = node_cache[:obs_utext][index]
218
+ if cached
219
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
220
+ @index = cached.interval.end
221
+ end
222
+ return cached
223
+ end
224
+
225
+ r0 = _nt_obs_text
226
+
227
+ node_cache[:obs_utext][start_index] = r0
228
+
229
+ r0
230
+ end
231
+
232
+ def _nt_obs_phrase
233
+ start_index = index
234
+ if node_cache[:obs_phrase].has_key?(index)
235
+ cached = node_cache[:obs_phrase][index]
236
+ if cached
237
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
238
+ @index = cached.interval.end
239
+ end
240
+ return cached
241
+ end
242
+
243
+ s0, i0 = [], index
244
+ loop do
245
+ i1 = index
246
+ r2 = _nt_word
247
+ if r2
248
+ r1 = r2
249
+ else
250
+ if has_terminal?(".", false, index)
251
+ r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
252
+ @index += 1
253
+ else
254
+ terminal_parse_failure(".")
255
+ r3 = nil
256
+ end
257
+ if r3
258
+ r1 = r3
259
+ else
260
+ if has_terminal?("@", false, index)
261
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
262
+ @index += 1
263
+ else
264
+ terminal_parse_failure("@")
265
+ r4 = nil
266
+ end
267
+ if r4
268
+ r1 = r4
269
+ else
270
+ @index = i1
271
+ r1 = nil
272
+ end
273
+ end
274
+ end
275
+ if r1
276
+ s0 << r1
277
+ else
278
+ break
279
+ end
280
+ end
281
+ if s0.empty?
282
+ @index = i0
283
+ r0 = nil
284
+ else
285
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
286
+ end
287
+
288
+ node_cache[:obs_phrase][start_index] = r0
289
+
290
+ r0
291
+ end
292
+
293
+ module ObsPhraseList0
294
+ end
295
+
296
+ module ObsPhraseList1
297
+ end
298
+
299
+ def _nt_obs_phrase_list
300
+ start_index = index
301
+ if node_cache[:obs_phrase_list].has_key?(index)
302
+ cached = node_cache[:obs_phrase_list][index]
303
+ if cached
304
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
305
+ @index = cached.interval.end
306
+ end
307
+ return cached
308
+ end
309
+
310
+ i0 = index
311
+ r1 = _nt_phrase
312
+ if r1
313
+ r0 = r1
314
+ else
315
+ i2, s2 = index, []
316
+ s3, i3 = [], index
317
+ loop do
318
+ i4, s4 = index, []
319
+ r6 = _nt_phrase
320
+ if r6
321
+ r5 = r6
322
+ else
323
+ r5 = instantiate_node(SyntaxNode,input, index...index)
324
+ end
325
+ s4 << r5
326
+ if r5
327
+ r8 = _nt_CFWS
328
+ if r8
329
+ r7 = r8
330
+ else
331
+ r7 = instantiate_node(SyntaxNode,input, index...index)
332
+ end
333
+ s4 << r7
334
+ if r7
335
+ if has_terminal?(",", false, index)
336
+ r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
337
+ @index += 1
338
+ else
339
+ terminal_parse_failure(",")
340
+ r9 = nil
341
+ end
342
+ s4 << r9
343
+ if r9
344
+ r11 = _nt_CFWS
345
+ if r11
346
+ r10 = r11
347
+ else
348
+ r10 = instantiate_node(SyntaxNode,input, index...index)
349
+ end
350
+ s4 << r10
351
+ end
352
+ end
353
+ end
354
+ if s4.last
355
+ r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
356
+ r4.extend(ObsPhraseList0)
357
+ else
358
+ @index = i4
359
+ r4 = nil
360
+ end
361
+ if r4
362
+ s3 << r4
363
+ else
364
+ break
365
+ end
366
+ end
367
+ if s3.empty?
368
+ @index = i3
369
+ r3 = nil
370
+ else
371
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
372
+ end
373
+ s2 << r3
374
+ if r3
375
+ r13 = _nt_phrase
376
+ if r13
377
+ r12 = r13
378
+ else
379
+ r12 = instantiate_node(SyntaxNode,input, index...index)
380
+ end
381
+ s2 << r12
382
+ end
383
+ if s2.last
384
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
385
+ r2.extend(ObsPhraseList1)
386
+ else
387
+ @index = i2
388
+ r2 = nil
389
+ end
390
+ if r2
391
+ r0 = r2
392
+ else
393
+ @index = i0
394
+ r0 = nil
395
+ end
396
+ end
397
+
398
+ node_cache[:obs_phrase_list][start_index] = r0
399
+
400
+ r0
401
+ end
402
+
403
+ module ObsFWS0
404
+ def CRLF
405
+ elements[0]
406
+ end
407
+
408
+ end
409
+
410
+ module ObsFWS1
411
+ end
412
+
413
+ def _nt_obs_FWS
414
+ start_index = index
415
+ if node_cache[:obs_FWS].has_key?(index)
416
+ cached = node_cache[:obs_FWS][index]
417
+ if cached
418
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
419
+ @index = cached.interval.end
420
+ end
421
+ return cached
422
+ end
423
+
424
+ i0, s0 = index, []
425
+ s1, i1 = [], index
426
+ loop do
427
+ r2 = _nt_WSP
428
+ if r2
429
+ s1 << r2
430
+ else
431
+ break
432
+ end
433
+ end
434
+ if s1.empty?
435
+ @index = i1
436
+ r1 = nil
437
+ else
438
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
439
+ end
440
+ s0 << r1
441
+ if r1
442
+ s3, i3 = [], index
443
+ loop do
444
+ i4, s4 = index, []
445
+ r5 = _nt_CRLF
446
+ s4 << r5
447
+ if r5
448
+ s6, i6 = [], index
449
+ loop do
450
+ r7 = _nt_WSP
451
+ if r7
452
+ s6 << r7
453
+ else
454
+ break
455
+ end
456
+ end
457
+ if s6.empty?
458
+ @index = i6
459
+ r6 = nil
460
+ else
461
+ r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
462
+ end
463
+ s4 << r6
464
+ end
465
+ if s4.last
466
+ r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
467
+ r4.extend(ObsFWS0)
468
+ else
469
+ @index = i4
470
+ r4 = nil
471
+ end
472
+ if r4
473
+ s3 << r4
474
+ else
475
+ break
476
+ end
477
+ end
478
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
479
+ s0 << r3
480
+ end
481
+ if s0.last
482
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
483
+ r0.extend(ObsFWS1)
484
+ else
485
+ @index = i0
486
+ r0 = nil
487
+ end
488
+
489
+ node_cache[:obs_FWS][start_index] = r0
490
+
491
+ r0
492
+ end
493
+
494
+ module ObsDayOfWeek0
495
+ def day_name
496
+ elements[1]
497
+ end
498
+
499
+ end
500
+
501
+ def _nt_obs_day_of_week
502
+ start_index = index
503
+ if node_cache[:obs_day_of_week].has_key?(index)
504
+ cached = node_cache[:obs_day_of_week][index]
505
+ if cached
506
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
507
+ @index = cached.interval.end
508
+ end
509
+ return cached
510
+ end
511
+
512
+ i0, s0 = index, []
513
+ r2 = _nt_CFWS
514
+ if r2
515
+ r1 = r2
516
+ else
517
+ r1 = instantiate_node(SyntaxNode,input, index...index)
518
+ end
519
+ s0 << r1
520
+ if r1
521
+ r3 = _nt_day_name
522
+ s0 << r3
523
+ if r3
524
+ r5 = _nt_CFWS
525
+ if r5
526
+ r4 = r5
527
+ else
528
+ r4 = instantiate_node(SyntaxNode,input, index...index)
529
+ end
530
+ s0 << r4
531
+ end
532
+ end
533
+ if s0.last
534
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
535
+ r0.extend(ObsDayOfWeek0)
536
+ else
537
+ @index = i0
538
+ r0 = nil
539
+ end
540
+
541
+ node_cache[:obs_day_of_week][start_index] = r0
542
+
543
+ r0
544
+ end
545
+
546
+ module ObsYear0
547
+ def DIGIT1
548
+ elements[0]
549
+ end
550
+
551
+ def DIGIT2
552
+ elements[1]
553
+ end
554
+ end
555
+
556
+ module ObsYear1
557
+ end
558
+
559
+ def _nt_obs_year
560
+ start_index = index
561
+ if node_cache[:obs_year].has_key?(index)
562
+ cached = node_cache[:obs_year][index]
563
+ if cached
564
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
565
+ @index = cached.interval.end
566
+ end
567
+ return cached
568
+ end
569
+
570
+ i0, s0 = index, []
571
+ r2 = _nt_CFWS
572
+ if r2
573
+ r1 = r2
574
+ else
575
+ r1 = instantiate_node(SyntaxNode,input, index...index)
576
+ end
577
+ s0 << r1
578
+ if r1
579
+ i3, s3 = index, []
580
+ r4 = _nt_DIGIT
581
+ s3 << r4
582
+ if r4
583
+ r5 = _nt_DIGIT
584
+ s3 << r5
585
+ end
586
+ if s3.last
587
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
588
+ r3.extend(ObsYear0)
589
+ else
590
+ @index = i3
591
+ r3 = nil
592
+ end
593
+ s0 << r3
594
+ if r3
595
+ r7 = _nt_CFWS
596
+ if r7
597
+ r6 = r7
598
+ else
599
+ r6 = instantiate_node(SyntaxNode,input, index...index)
600
+ end
601
+ s0 << r6
602
+ end
603
+ end
604
+ if s0.last
605
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
606
+ r0.extend(ObsYear1)
607
+ else
608
+ @index = i0
609
+ r0 = nil
610
+ end
611
+
612
+ node_cache[:obs_year][start_index] = r0
613
+
614
+ r0
615
+ end
616
+
617
+ module ObsMonth0
618
+ def CFWS1
619
+ elements[0]
620
+ end
621
+
622
+ def month_name
623
+ elements[1]
624
+ end
625
+
626
+ def CFWS2
627
+ elements[2]
628
+ end
629
+ end
630
+
631
+ def _nt_obs_month
632
+ start_index = index
633
+ if node_cache[:obs_month].has_key?(index)
634
+ cached = node_cache[:obs_month][index]
635
+ if cached
636
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
637
+ @index = cached.interval.end
638
+ end
639
+ return cached
640
+ end
641
+
642
+ i0, s0 = index, []
643
+ r1 = _nt_CFWS
644
+ s0 << r1
645
+ if r1
646
+ r2 = _nt_month_name
647
+ s0 << r2
648
+ if r2
649
+ r3 = _nt_CFWS
650
+ s0 << r3
651
+ end
652
+ end
653
+ if s0.last
654
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
655
+ r0.extend(ObsMonth0)
656
+ else
657
+ @index = i0
658
+ r0 = nil
659
+ end
660
+
661
+ node_cache[:obs_month][start_index] = r0
662
+
663
+ r0
664
+ end
665
+
666
+ module ObsDay0
667
+ def DIGIT1
668
+ elements[0]
669
+ end
670
+
671
+ def DIGIT2
672
+ elements[1]
673
+ end
674
+ end
675
+
676
+ module ObsDay1
677
+ end
678
+
679
+ def _nt_obs_day
680
+ start_index = index
681
+ if node_cache[:obs_day].has_key?(index)
682
+ cached = node_cache[:obs_day][index]
683
+ if cached
684
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
685
+ @index = cached.interval.end
686
+ end
687
+ return cached
688
+ end
689
+
690
+ i0, s0 = index, []
691
+ r2 = _nt_CFWS
692
+ if r2
693
+ r1 = r2
694
+ else
695
+ r1 = instantiate_node(SyntaxNode,input, index...index)
696
+ end
697
+ s0 << r1
698
+ if r1
699
+ i3 = index
700
+ r4 = _nt_DIGIT
701
+ if r4
702
+ r3 = r4
703
+ else
704
+ i5, s5 = index, []
705
+ r6 = _nt_DIGIT
706
+ s5 << r6
707
+ if r6
708
+ r7 = _nt_DIGIT
709
+ s5 << r7
710
+ end
711
+ if s5.last
712
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
713
+ r5.extend(ObsDay0)
714
+ else
715
+ @index = i5
716
+ r5 = nil
717
+ end
718
+ if r5
719
+ r3 = r5
720
+ else
721
+ @index = i3
722
+ r3 = nil
723
+ end
724
+ end
725
+ s0 << r3
726
+ if r3
727
+ r9 = _nt_CFWS
728
+ if r9
729
+ r8 = r9
730
+ else
731
+ r8 = instantiate_node(SyntaxNode,input, index...index)
732
+ end
733
+ s0 << r8
734
+ end
735
+ end
736
+ if s0.last
737
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
738
+ r0.extend(ObsDay1)
739
+ else
740
+ @index = i0
741
+ r0 = nil
742
+ end
743
+
744
+ node_cache[:obs_day][start_index] = r0
745
+
746
+ r0
747
+ end
748
+
749
+ module ObsHour0
750
+ def DIGIT1
751
+ elements[0]
752
+ end
753
+
754
+ def DIGIT2
755
+ elements[1]
756
+ end
757
+ end
758
+
759
+ module ObsHour1
760
+ end
761
+
762
+ def _nt_obs_hour
763
+ start_index = index
764
+ if node_cache[:obs_hour].has_key?(index)
765
+ cached = node_cache[:obs_hour][index]
766
+ if cached
767
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
768
+ @index = cached.interval.end
769
+ end
770
+ return cached
771
+ end
772
+
773
+ i0, s0 = index, []
774
+ r2 = _nt_CFWS
775
+ if r2
776
+ r1 = r2
777
+ else
778
+ r1 = instantiate_node(SyntaxNode,input, index...index)
779
+ end
780
+ s0 << r1
781
+ if r1
782
+ i3, s3 = index, []
783
+ r4 = _nt_DIGIT
784
+ s3 << r4
785
+ if r4
786
+ r5 = _nt_DIGIT
787
+ s3 << r5
788
+ end
789
+ if s3.last
790
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
791
+ r3.extend(ObsHour0)
792
+ else
793
+ @index = i3
794
+ r3 = nil
795
+ end
796
+ s0 << r3
797
+ if r3
798
+ r7 = _nt_CFWS
799
+ if r7
800
+ r6 = r7
801
+ else
802
+ r6 = instantiate_node(SyntaxNode,input, index...index)
803
+ end
804
+ s0 << r6
805
+ end
806
+ end
807
+ if s0.last
808
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
809
+ r0.extend(ObsHour1)
810
+ else
811
+ @index = i0
812
+ r0 = nil
813
+ end
814
+
815
+ node_cache[:obs_hour][start_index] = r0
816
+
817
+ r0
818
+ end
819
+
820
+ module ObsMinute0
821
+ def DIGIT1
822
+ elements[0]
823
+ end
824
+
825
+ def DIGIT2
826
+ elements[1]
827
+ end
828
+ end
829
+
830
+ module ObsMinute1
831
+ end
832
+
833
+ def _nt_obs_minute
834
+ start_index = index
835
+ if node_cache[:obs_minute].has_key?(index)
836
+ cached = node_cache[:obs_minute][index]
837
+ if cached
838
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
839
+ @index = cached.interval.end
840
+ end
841
+ return cached
842
+ end
843
+
844
+ i0, s0 = index, []
845
+ r2 = _nt_CFWS
846
+ if r2
847
+ r1 = r2
848
+ else
849
+ r1 = instantiate_node(SyntaxNode,input, index...index)
850
+ end
851
+ s0 << r1
852
+ if r1
853
+ i3, s3 = index, []
854
+ r4 = _nt_DIGIT
855
+ s3 << r4
856
+ if r4
857
+ r5 = _nt_DIGIT
858
+ s3 << r5
859
+ end
860
+ if s3.last
861
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
862
+ r3.extend(ObsMinute0)
863
+ else
864
+ @index = i3
865
+ r3 = nil
866
+ end
867
+ s0 << r3
868
+ if r3
869
+ r7 = _nt_CFWS
870
+ if r7
871
+ r6 = r7
872
+ else
873
+ r6 = instantiate_node(SyntaxNode,input, index...index)
874
+ end
875
+ s0 << r6
876
+ end
877
+ end
878
+ if s0.last
879
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
880
+ r0.extend(ObsMinute1)
881
+ else
882
+ @index = i0
883
+ r0 = nil
884
+ end
885
+
886
+ node_cache[:obs_minute][start_index] = r0
887
+
888
+ r0
889
+ end
890
+
891
+ module ObsSecond0
892
+ def DIGIT1
893
+ elements[0]
894
+ end
895
+
896
+ def DIGIT2
897
+ elements[1]
898
+ end
899
+ end
900
+
901
+ module ObsSecond1
902
+ end
903
+
904
+ def _nt_obs_second
905
+ start_index = index
906
+ if node_cache[:obs_second].has_key?(index)
907
+ cached = node_cache[:obs_second][index]
908
+ if cached
909
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
910
+ @index = cached.interval.end
911
+ end
912
+ return cached
913
+ end
914
+
915
+ i0, s0 = index, []
916
+ r2 = _nt_CFWS
917
+ if r2
918
+ r1 = r2
919
+ else
920
+ r1 = instantiate_node(SyntaxNode,input, index...index)
921
+ end
922
+ s0 << r1
923
+ if r1
924
+ i3, s3 = index, []
925
+ r4 = _nt_DIGIT
926
+ s3 << r4
927
+ if r4
928
+ r5 = _nt_DIGIT
929
+ s3 << r5
930
+ end
931
+ if s3.last
932
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
933
+ r3.extend(ObsSecond0)
934
+ else
935
+ @index = i3
936
+ r3 = nil
937
+ end
938
+ s0 << r3
939
+ if r3
940
+ r7 = _nt_CFWS
941
+ if r7
942
+ r6 = r7
943
+ else
944
+ r6 = instantiate_node(SyntaxNode,input, index...index)
945
+ end
946
+ s0 << r6
947
+ end
948
+ end
949
+ if s0.last
950
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
951
+ r0.extend(ObsSecond1)
952
+ else
953
+ @index = i0
954
+ r0 = nil
955
+ end
956
+
957
+ node_cache[:obs_second][start_index] = r0
958
+
959
+ r0
960
+ end
961
+
962
+ def _nt_obs_zone
963
+ start_index = index
964
+ if node_cache[:obs_zone].has_key?(index)
965
+ cached = node_cache[:obs_zone][index]
966
+ if cached
967
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
968
+ @index = cached.interval.end
969
+ end
970
+ return cached
971
+ end
972
+
973
+ i0 = index
974
+ if has_terminal?("UT", false, index)
975
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 2))
976
+ @index += 2
977
+ else
978
+ terminal_parse_failure("UT")
979
+ r1 = nil
980
+ end
981
+ if r1
982
+ r0 = r1
983
+ else
984
+ if has_terminal?("GMT", false, index)
985
+ r2 = instantiate_node(SyntaxNode,input, index...(index + 3))
986
+ @index += 3
987
+ else
988
+ terminal_parse_failure("GMT")
989
+ r2 = nil
990
+ end
991
+ if r2
992
+ r0 = r2
993
+ else
994
+ if has_terminal?("EST", false, index)
995
+ r3 = instantiate_node(SyntaxNode,input, index...(index + 3))
996
+ @index += 3
997
+ else
998
+ terminal_parse_failure("EST")
999
+ r3 = nil
1000
+ end
1001
+ if r3
1002
+ r0 = r3
1003
+ else
1004
+ if has_terminal?("EDT", false, index)
1005
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 3))
1006
+ @index += 3
1007
+ else
1008
+ terminal_parse_failure("EDT")
1009
+ r4 = nil
1010
+ end
1011
+ if r4
1012
+ r0 = r4
1013
+ else
1014
+ if has_terminal?("CST", false, index)
1015
+ r5 = instantiate_node(SyntaxNode,input, index...(index + 3))
1016
+ @index += 3
1017
+ else
1018
+ terminal_parse_failure("CST")
1019
+ r5 = nil
1020
+ end
1021
+ if r5
1022
+ r0 = r5
1023
+ else
1024
+ if has_terminal?("CDT", false, index)
1025
+ r6 = instantiate_node(SyntaxNode,input, index...(index + 3))
1026
+ @index += 3
1027
+ else
1028
+ terminal_parse_failure("CDT")
1029
+ r6 = nil
1030
+ end
1031
+ if r6
1032
+ r0 = r6
1033
+ else
1034
+ if has_terminal?("MST", false, index)
1035
+ r7 = instantiate_node(SyntaxNode,input, index...(index + 3))
1036
+ @index += 3
1037
+ else
1038
+ terminal_parse_failure("MST")
1039
+ r7 = nil
1040
+ end
1041
+ if r7
1042
+ r0 = r7
1043
+ else
1044
+ if has_terminal?("MDT", false, index)
1045
+ r8 = instantiate_node(SyntaxNode,input, index...(index + 3))
1046
+ @index += 3
1047
+ else
1048
+ terminal_parse_failure("MDT")
1049
+ r8 = nil
1050
+ end
1051
+ if r8
1052
+ r0 = r8
1053
+ else
1054
+ if has_terminal?("PST", false, index)
1055
+ r9 = instantiate_node(SyntaxNode,input, index...(index + 3))
1056
+ @index += 3
1057
+ else
1058
+ terminal_parse_failure("PST")
1059
+ r9 = nil
1060
+ end
1061
+ if r9
1062
+ r0 = r9
1063
+ else
1064
+ if has_terminal?("PDT", false, index)
1065
+ r10 = instantiate_node(SyntaxNode,input, index...(index + 3))
1066
+ @index += 3
1067
+ else
1068
+ terminal_parse_failure("PDT")
1069
+ r10 = nil
1070
+ end
1071
+ if r10
1072
+ r0 = r10
1073
+ else
1074
+ if has_terminal?('\G[\\x41-\\x49]', true, index)
1075
+ r11 = true
1076
+ @index += 1
1077
+ else
1078
+ r11 = nil
1079
+ end
1080
+ if r11
1081
+ r0 = r11
1082
+ else
1083
+ if has_terminal?('\G[\\x4B-\\x5A]', true, index)
1084
+ r12 = true
1085
+ @index += 1
1086
+ else
1087
+ r12 = nil
1088
+ end
1089
+ if r12
1090
+ r0 = r12
1091
+ else
1092
+ if has_terminal?('\G[\\x61-\\x69]', true, index)
1093
+ r13 = true
1094
+ @index += 1
1095
+ else
1096
+ r13 = nil
1097
+ end
1098
+ if r13
1099
+ r0 = r13
1100
+ else
1101
+ if has_terminal?('\G[\\x6B-\\x7A]', true, index)
1102
+ r14 = true
1103
+ @index += 1
1104
+ else
1105
+ r14 = nil
1106
+ end
1107
+ if r14
1108
+ r0 = r14
1109
+ else
1110
+ @index = i0
1111
+ r0 = nil
1112
+ end
1113
+ end
1114
+ end
1115
+ end
1116
+ end
1117
+ end
1118
+ end
1119
+ end
1120
+ end
1121
+ end
1122
+ end
1123
+ end
1124
+ end
1125
+ end
1126
+
1127
+ node_cache[:obs_zone][start_index] = r0
1128
+
1129
+ r0
1130
+ end
1131
+
1132
+ module ObsAngleAddr0
1133
+ def addr_spec
1134
+ elements[3]
1135
+ end
1136
+
1137
+ end
1138
+
1139
+ def _nt_obs_angle_addr
1140
+ start_index = index
1141
+ if node_cache[:obs_angle_addr].has_key?(index)
1142
+ cached = node_cache[:obs_angle_addr][index]
1143
+ if cached
1144
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1145
+ @index = cached.interval.end
1146
+ end
1147
+ return cached
1148
+ end
1149
+
1150
+ i0, s0 = index, []
1151
+ r2 = _nt_CFWS
1152
+ if r2
1153
+ r1 = r2
1154
+ else
1155
+ r1 = instantiate_node(SyntaxNode,input, index...index)
1156
+ end
1157
+ s0 << r1
1158
+ if r1
1159
+ if has_terminal?("<", false, index)
1160
+ r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
1161
+ @index += 1
1162
+ else
1163
+ terminal_parse_failure("<")
1164
+ r3 = nil
1165
+ end
1166
+ s0 << r3
1167
+ if r3
1168
+ r5 = _nt_obs_route
1169
+ if r5
1170
+ r4 = r5
1171
+ else
1172
+ r4 = instantiate_node(SyntaxNode,input, index...index)
1173
+ end
1174
+ s0 << r4
1175
+ if r4
1176
+ r6 = _nt_addr_spec
1177
+ s0 << r6
1178
+ if r6
1179
+ if has_terminal?(">", false, index)
1180
+ r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
1181
+ @index += 1
1182
+ else
1183
+ terminal_parse_failure(">")
1184
+ r7 = nil
1185
+ end
1186
+ s0 << r7
1187
+ if r7
1188
+ r9 = _nt_CFWS
1189
+ if r9
1190
+ r8 = r9
1191
+ else
1192
+ r8 = instantiate_node(SyntaxNode,input, index...index)
1193
+ end
1194
+ s0 << r8
1195
+ end
1196
+ end
1197
+ end
1198
+ end
1199
+ end
1200
+ if s0.last
1201
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1202
+ r0.extend(ObsAngleAddr0)
1203
+ else
1204
+ @index = i0
1205
+ r0 = nil
1206
+ end
1207
+
1208
+ node_cache[:obs_angle_addr][start_index] = r0
1209
+
1210
+ r0
1211
+ end
1212
+
1213
+ module ObsRoute0
1214
+ def obs_domain_list
1215
+ elements[1]
1216
+ end
1217
+
1218
+ end
1219
+
1220
+ def _nt_obs_route
1221
+ start_index = index
1222
+ if node_cache[:obs_route].has_key?(index)
1223
+ cached = node_cache[:obs_route][index]
1224
+ if cached
1225
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1226
+ @index = cached.interval.end
1227
+ end
1228
+ return cached
1229
+ end
1230
+
1231
+ i0, s0 = index, []
1232
+ r2 = _nt_CFWS
1233
+ if r2
1234
+ r1 = r2
1235
+ else
1236
+ r1 = instantiate_node(SyntaxNode,input, index...index)
1237
+ end
1238
+ s0 << r1
1239
+ if r1
1240
+ r3 = _nt_obs_domain_list
1241
+ s0 << r3
1242
+ if r3
1243
+ if has_terminal?(":", false, index)
1244
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
1245
+ @index += 1
1246
+ else
1247
+ terminal_parse_failure(":")
1248
+ r4 = nil
1249
+ end
1250
+ s0 << r4
1251
+ if r4
1252
+ r6 = _nt_CFWS
1253
+ if r6
1254
+ r5 = r6
1255
+ else
1256
+ r5 = instantiate_node(SyntaxNode,input, index...index)
1257
+ end
1258
+ s0 << r5
1259
+ end
1260
+ end
1261
+ end
1262
+ if s0.last
1263
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1264
+ r0.extend(ObsRoute0)
1265
+ else
1266
+ @index = i0
1267
+ r0 = nil
1268
+ end
1269
+
1270
+ node_cache[:obs_route][start_index] = r0
1271
+
1272
+ r0
1273
+ end
1274
+
1275
+ module ObsDomainList0
1276
+ def domain
1277
+ elements[3]
1278
+ end
1279
+ end
1280
+
1281
+ module ObsDomainList1
1282
+ def domain
1283
+ elements[1]
1284
+ end
1285
+
1286
+ end
1287
+
1288
+ def _nt_obs_domain_list
1289
+ start_index = index
1290
+ if node_cache[:obs_domain_list].has_key?(index)
1291
+ cached = node_cache[:obs_domain_list][index]
1292
+ if cached
1293
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1294
+ @index = cached.interval.end
1295
+ end
1296
+ return cached
1297
+ end
1298
+
1299
+ i0, s0 = index, []
1300
+ if has_terminal?("@", false, index)
1301
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
1302
+ @index += 1
1303
+ else
1304
+ terminal_parse_failure("@")
1305
+ r1 = nil
1306
+ end
1307
+ s0 << r1
1308
+ if r1
1309
+ r2 = _nt_domain
1310
+ s0 << r2
1311
+ if r2
1312
+ s3, i3 = [], index
1313
+ loop do
1314
+ i4, s4 = index, []
1315
+ s5, i5 = [], index
1316
+ loop do
1317
+ if has_terminal?(",", false, index)
1318
+ r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
1319
+ @index += 1
1320
+ else
1321
+ terminal_parse_failure(",")
1322
+ r6 = nil
1323
+ end
1324
+ if r6
1325
+ s5 << r6
1326
+ else
1327
+ break
1328
+ end
1329
+ end
1330
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
1331
+ s4 << r5
1332
+ if r5
1333
+ r8 = _nt_CFWS
1334
+ if r8
1335
+ r7 = r8
1336
+ else
1337
+ r7 = instantiate_node(SyntaxNode,input, index...index)
1338
+ end
1339
+ s4 << r7
1340
+ if r7
1341
+ if has_terminal?("@", false, index)
1342
+ r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
1343
+ @index += 1
1344
+ else
1345
+ terminal_parse_failure("@")
1346
+ r9 = nil
1347
+ end
1348
+ s4 << r9
1349
+ if r9
1350
+ r10 = _nt_domain
1351
+ s4 << r10
1352
+ end
1353
+ end
1354
+ end
1355
+ if s4.last
1356
+ r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
1357
+ r4.extend(ObsDomainList0)
1358
+ else
1359
+ @index = i4
1360
+ r4 = nil
1361
+ end
1362
+ if r4
1363
+ s3 << r4
1364
+ else
1365
+ break
1366
+ end
1367
+ end
1368
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
1369
+ s0 << r3
1370
+ end
1371
+ end
1372
+ if s0.last
1373
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1374
+ r0.extend(ObsDomainList1)
1375
+ else
1376
+ @index = i0
1377
+ r0 = nil
1378
+ end
1379
+
1380
+ node_cache[:obs_domain_list][start_index] = r0
1381
+
1382
+ r0
1383
+ end
1384
+
1385
+ module ObsLocalPart0
1386
+ def word
1387
+ elements[1]
1388
+ end
1389
+ end
1390
+
1391
+ module ObsLocalPart1
1392
+ def word
1393
+ elements[0]
1394
+ end
1395
+
1396
+ end
1397
+
1398
+ def _nt_obs_local_part
1399
+ start_index = index
1400
+ if node_cache[:obs_local_part].has_key?(index)
1401
+ cached = node_cache[:obs_local_part][index]
1402
+ if cached
1403
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1404
+ @index = cached.interval.end
1405
+ end
1406
+ return cached
1407
+ end
1408
+
1409
+ i0, s0 = index, []
1410
+ r1 = _nt_word
1411
+ s0 << r1
1412
+ if r1
1413
+ s2, i2 = [], index
1414
+ loop do
1415
+ i3, s3 = index, []
1416
+ if has_terminal?(".", false, index)
1417
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
1418
+ @index += 1
1419
+ else
1420
+ terminal_parse_failure(".")
1421
+ r4 = nil
1422
+ end
1423
+ s3 << r4
1424
+ if r4
1425
+ r5 = _nt_word
1426
+ s3 << r5
1427
+ end
1428
+ if s3.last
1429
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
1430
+ r3.extend(ObsLocalPart0)
1431
+ else
1432
+ @index = i3
1433
+ r3 = nil
1434
+ end
1435
+ if r3
1436
+ s2 << r3
1437
+ else
1438
+ break
1439
+ end
1440
+ end
1441
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1442
+ s0 << r2
1443
+ end
1444
+ if s0.last
1445
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1446
+ r0.extend(ObsLocalPart1)
1447
+ else
1448
+ @index = i0
1449
+ r0 = nil
1450
+ end
1451
+
1452
+ node_cache[:obs_local_part][start_index] = r0
1453
+
1454
+ r0
1455
+ end
1456
+
1457
+ module ObsDomain0
1458
+ def atom
1459
+ elements[1]
1460
+ end
1461
+ end
1462
+
1463
+ module ObsDomain1
1464
+ def atom
1465
+ elements[0]
1466
+ end
1467
+
1468
+ end
1469
+
1470
+ def _nt_obs_domain
1471
+ start_index = index
1472
+ if node_cache[:obs_domain].has_key?(index)
1473
+ cached = node_cache[:obs_domain][index]
1474
+ if cached
1475
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1476
+ @index = cached.interval.end
1477
+ end
1478
+ return cached
1479
+ end
1480
+
1481
+ i0, s0 = index, []
1482
+ r1 = _nt_atom
1483
+ s0 << r1
1484
+ if r1
1485
+ s2, i2 = [], index
1486
+ loop do
1487
+ i3, s3 = index, []
1488
+ if has_terminal?(".", false, index)
1489
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
1490
+ @index += 1
1491
+ else
1492
+ terminal_parse_failure(".")
1493
+ r4 = nil
1494
+ end
1495
+ s3 << r4
1496
+ if r4
1497
+ r5 = _nt_atom
1498
+ s3 << r5
1499
+ end
1500
+ if s3.last
1501
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
1502
+ r3.extend(ObsDomain0)
1503
+ else
1504
+ @index = i3
1505
+ r3 = nil
1506
+ end
1507
+ if r3
1508
+ s2 << r3
1509
+ else
1510
+ break
1511
+ end
1512
+ end
1513
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1514
+ s0 << r2
1515
+ end
1516
+ if s0.last
1517
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1518
+ r0.extend(ObsDomain1)
1519
+ else
1520
+ @index = i0
1521
+ r0 = nil
1522
+ end
1523
+
1524
+ node_cache[:obs_domain][start_index] = r0
1525
+
1526
+ r0
1527
+ end
1528
+
1529
+ module ObsMboxList0
1530
+ end
1531
+
1532
+ module ObsMboxList1
1533
+ end
1534
+
1535
+ def _nt_obs_mbox_list
1536
+ start_index = index
1537
+ if node_cache[:obs_mbox_list].has_key?(index)
1538
+ cached = node_cache[:obs_mbox_list][index]
1539
+ if cached
1540
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1541
+ @index = cached.interval.end
1542
+ end
1543
+ return cached
1544
+ end
1545
+
1546
+ i0, s0 = index, []
1547
+ s1, i1 = [], index
1548
+ loop do
1549
+ i2, s2 = index, []
1550
+ r4 = _nt_mailbox
1551
+ if r4
1552
+ r3 = r4
1553
+ else
1554
+ r3 = instantiate_node(SyntaxNode,input, index...index)
1555
+ end
1556
+ s2 << r3
1557
+ if r3
1558
+ r6 = _nt_CFWS
1559
+ if r6
1560
+ r5 = r6
1561
+ else
1562
+ r5 = instantiate_node(SyntaxNode,input, index...index)
1563
+ end
1564
+ s2 << r5
1565
+ if r5
1566
+ if has_terminal?(",", false, index)
1567
+ r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
1568
+ @index += 1
1569
+ else
1570
+ terminal_parse_failure(",")
1571
+ r7 = nil
1572
+ end
1573
+ s2 << r7
1574
+ if r7
1575
+ r9 = _nt_CFWS
1576
+ if r9
1577
+ r8 = r9
1578
+ else
1579
+ r8 = instantiate_node(SyntaxNode,input, index...index)
1580
+ end
1581
+ s2 << r8
1582
+ end
1583
+ end
1584
+ end
1585
+ if s2.last
1586
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1587
+ r2.extend(ObsMboxList0)
1588
+ else
1589
+ @index = i2
1590
+ r2 = nil
1591
+ end
1592
+ if r2
1593
+ s1 << r2
1594
+ else
1595
+ break
1596
+ end
1597
+ end
1598
+ if s1.empty?
1599
+ @index = i1
1600
+ r1 = nil
1601
+ else
1602
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1603
+ end
1604
+ s0 << r1
1605
+ if r1
1606
+ r11 = _nt_mailbox
1607
+ if r11
1608
+ r10 = r11
1609
+ else
1610
+ r10 = instantiate_node(SyntaxNode,input, index...index)
1611
+ end
1612
+ s0 << r10
1613
+ end
1614
+ if s0.last
1615
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1616
+ r0.extend(ObsMboxList1)
1617
+ else
1618
+ @index = i0
1619
+ r0 = nil
1620
+ end
1621
+
1622
+ node_cache[:obs_mbox_list][start_index] = r0
1623
+
1624
+ r0
1625
+ end
1626
+
1627
+ module ObsAddrList0
1628
+ end
1629
+
1630
+ module ObsAddrList1
1631
+ end
1632
+
1633
+ def _nt_obs_addr_list
1634
+ start_index = index
1635
+ if node_cache[:obs_addr_list].has_key?(index)
1636
+ cached = node_cache[:obs_addr_list][index]
1637
+ if cached
1638
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1639
+ @index = cached.interval.end
1640
+ end
1641
+ return cached
1642
+ end
1643
+
1644
+ i0, s0 = index, []
1645
+ s1, i1 = [], index
1646
+ loop do
1647
+ i2, s2 = index, []
1648
+ r4 = _nt_address
1649
+ if r4
1650
+ r3 = r4
1651
+ else
1652
+ r3 = instantiate_node(SyntaxNode,input, index...index)
1653
+ end
1654
+ s2 << r3
1655
+ if r3
1656
+ r6 = _nt_CFWS
1657
+ if r6
1658
+ r5 = r6
1659
+ else
1660
+ r5 = instantiate_node(SyntaxNode,input, index...index)
1661
+ end
1662
+ s2 << r5
1663
+ if r5
1664
+ if has_terminal?(",", false, index)
1665
+ r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
1666
+ @index += 1
1667
+ else
1668
+ terminal_parse_failure(",")
1669
+ r7 = nil
1670
+ end
1671
+ s2 << r7
1672
+ if r7
1673
+ r9 = _nt_CFWS
1674
+ if r9
1675
+ r8 = r9
1676
+ else
1677
+ r8 = instantiate_node(SyntaxNode,input, index...index)
1678
+ end
1679
+ s2 << r8
1680
+ end
1681
+ end
1682
+ end
1683
+ if s2.last
1684
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1685
+ r2.extend(ObsAddrList0)
1686
+ else
1687
+ @index = i2
1688
+ r2 = nil
1689
+ end
1690
+ if r2
1691
+ s1 << r2
1692
+ else
1693
+ break
1694
+ end
1695
+ end
1696
+ if s1.empty?
1697
+ @index = i1
1698
+ r1 = nil
1699
+ else
1700
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1701
+ end
1702
+ s0 << r1
1703
+ if r1
1704
+ r11 = _nt_address
1705
+ if r11
1706
+ r10 = r11
1707
+ else
1708
+ r10 = instantiate_node(SyntaxNode,input, index...index)
1709
+ end
1710
+ s0 << r10
1711
+ end
1712
+ if s0.last
1713
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1714
+ r0.extend(ObsAddrList1)
1715
+ else
1716
+ @index = i0
1717
+ r0 = nil
1718
+ end
1719
+
1720
+ node_cache[:obs_addr_list][start_index] = r0
1721
+
1722
+ r0
1723
+ end
1724
+
1725
+ def _nt_obs_fields
1726
+ start_index = index
1727
+ if node_cache[:obs_fields].has_key?(index)
1728
+ cached = node_cache[:obs_fields][index]
1729
+ if cached
1730
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1731
+ @index = cached.interval.end
1732
+ end
1733
+ return cached
1734
+ end
1735
+
1736
+ s0, i0 = [], index
1737
+ loop do
1738
+ i1 = index
1739
+ r2 = _nt_obs_return
1740
+ if r2
1741
+ r1 = r2
1742
+ else
1743
+ r3 = _nt_obs_received
1744
+ if r3
1745
+ r1 = r3
1746
+ else
1747
+ r4 = _nt_obs_orig_date
1748
+ if r4
1749
+ r1 = r4
1750
+ else
1751
+ r5 = _nt_obs_from
1752
+ if r5
1753
+ r1 = r5
1754
+ else
1755
+ r6 = _nt_obs_sender
1756
+ if r6
1757
+ r1 = r6
1758
+ else
1759
+ r7 = _nt_obs_reply_to
1760
+ if r7
1761
+ r1 = r7
1762
+ else
1763
+ r8 = _nt_obs_to
1764
+ if r8
1765
+ r1 = r8
1766
+ else
1767
+ r9 = _nt_obs_cc
1768
+ if r9
1769
+ r1 = r9
1770
+ else
1771
+ r10 = _nt_obs_bcc
1772
+ if r10
1773
+ r1 = r10
1774
+ else
1775
+ r11 = _nt_obs_message_id
1776
+ if r11
1777
+ r1 = r11
1778
+ else
1779
+ r12 = _nt_obs_in_reply_to
1780
+ if r12
1781
+ r1 = r12
1782
+ else
1783
+ r13 = _nt_obs_references
1784
+ if r13
1785
+ r1 = r13
1786
+ else
1787
+ r14 = _nt_obs_subject
1788
+ if r14
1789
+ r1 = r14
1790
+ else
1791
+ r15 = _nt_obs_comments
1792
+ if r15
1793
+ r1 = r15
1794
+ else
1795
+ r16 = _nt_obs_keywords
1796
+ if r16
1797
+ r1 = r16
1798
+ else
1799
+ r17 = _nt_obs_resent_date
1800
+ if r17
1801
+ r1 = r17
1802
+ else
1803
+ r18 = _nt_obs_resent_from
1804
+ if r18
1805
+ r1 = r18
1806
+ else
1807
+ r19 = _nt_obs_resent_send
1808
+ if r19
1809
+ r1 = r19
1810
+ else
1811
+ r20 = _nt_obs_resent_rply
1812
+ if r20
1813
+ r1 = r20
1814
+ else
1815
+ r21 = _nt_obs_resent_to
1816
+ if r21
1817
+ r1 = r21
1818
+ else
1819
+ r22 = _nt_obs_resent_cc
1820
+ if r22
1821
+ r1 = r22
1822
+ else
1823
+ r23 = _nt_obs_resent_bcc
1824
+ if r23
1825
+ r1 = r23
1826
+ else
1827
+ r24 = _nt_obs_resent_mid
1828
+ if r24
1829
+ r1 = r24
1830
+ else
1831
+ r25 = _nt_obs_optional
1832
+ if r25
1833
+ r1 = r25
1834
+ else
1835
+ @index = i1
1836
+ r1 = nil
1837
+ end
1838
+ end
1839
+ end
1840
+ end
1841
+ end
1842
+ end
1843
+ end
1844
+ end
1845
+ end
1846
+ end
1847
+ end
1848
+ end
1849
+ end
1850
+ end
1851
+ end
1852
+ end
1853
+ end
1854
+ end
1855
+ end
1856
+ end
1857
+ end
1858
+ end
1859
+ end
1860
+ end
1861
+ if r1
1862
+ s0 << r1
1863
+ else
1864
+ break
1865
+ end
1866
+ end
1867
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1868
+
1869
+ node_cache[:obs_fields][start_index] = r0
1870
+
1871
+ r0
1872
+ end
1873
+
1874
+ module ObsOrigDate0
1875
+ def date_time
1876
+ elements[3]
1877
+ end
1878
+
1879
+ def CRLF
1880
+ elements[4]
1881
+ end
1882
+ end
1883
+
1884
+ def _nt_obs_orig_date
1885
+ start_index = index
1886
+ if node_cache[:obs_orig_date].has_key?(index)
1887
+ cached = node_cache[:obs_orig_date][index]
1888
+ if cached
1889
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1890
+ @index = cached.interval.end
1891
+ end
1892
+ return cached
1893
+ end
1894
+
1895
+ i0, s0 = index, []
1896
+ if has_terminal?("Date", false, index)
1897
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 4))
1898
+ @index += 4
1899
+ else
1900
+ terminal_parse_failure("Date")
1901
+ r1 = nil
1902
+ end
1903
+ s0 << r1
1904
+ if r1
1905
+ s2, i2 = [], index
1906
+ loop do
1907
+ r3 = _nt_WSP
1908
+ if r3
1909
+ s2 << r3
1910
+ else
1911
+ break
1912
+ end
1913
+ end
1914
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1915
+ s0 << r2
1916
+ if r2
1917
+ if has_terminal?(":", false, index)
1918
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
1919
+ @index += 1
1920
+ else
1921
+ terminal_parse_failure(":")
1922
+ r4 = nil
1923
+ end
1924
+ s0 << r4
1925
+ if r4
1926
+ r5 = _nt_date_time
1927
+ s0 << r5
1928
+ if r5
1929
+ r6 = _nt_CRLF
1930
+ s0 << r6
1931
+ end
1932
+ end
1933
+ end
1934
+ end
1935
+ if s0.last
1936
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1937
+ r0.extend(ObsOrigDate0)
1938
+ else
1939
+ @index = i0
1940
+ r0 = nil
1941
+ end
1942
+
1943
+ node_cache[:obs_orig_date][start_index] = r0
1944
+
1945
+ r0
1946
+ end
1947
+
1948
+ module ObsFrom0
1949
+ def mailbox_list
1950
+ elements[3]
1951
+ end
1952
+
1953
+ def CRLF
1954
+ elements[4]
1955
+ end
1956
+ end
1957
+
1958
+ def _nt_obs_from
1959
+ start_index = index
1960
+ if node_cache[:obs_from].has_key?(index)
1961
+ cached = node_cache[:obs_from][index]
1962
+ if cached
1963
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1964
+ @index = cached.interval.end
1965
+ end
1966
+ return cached
1967
+ end
1968
+
1969
+ i0, s0 = index, []
1970
+ if has_terminal?("From", false, index)
1971
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 4))
1972
+ @index += 4
1973
+ else
1974
+ terminal_parse_failure("From")
1975
+ r1 = nil
1976
+ end
1977
+ s0 << r1
1978
+ if r1
1979
+ s2, i2 = [], index
1980
+ loop do
1981
+ r3 = _nt_WSP
1982
+ if r3
1983
+ s2 << r3
1984
+ else
1985
+ break
1986
+ end
1987
+ end
1988
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1989
+ s0 << r2
1990
+ if r2
1991
+ if has_terminal?(":", false, index)
1992
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
1993
+ @index += 1
1994
+ else
1995
+ terminal_parse_failure(":")
1996
+ r4 = nil
1997
+ end
1998
+ s0 << r4
1999
+ if r4
2000
+ r5 = _nt_mailbox_list
2001
+ s0 << r5
2002
+ if r5
2003
+ r6 = _nt_CRLF
2004
+ s0 << r6
2005
+ end
2006
+ end
2007
+ end
2008
+ end
2009
+ if s0.last
2010
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2011
+ r0.extend(ObsFrom0)
2012
+ else
2013
+ @index = i0
2014
+ r0 = nil
2015
+ end
2016
+
2017
+ node_cache[:obs_from][start_index] = r0
2018
+
2019
+ r0
2020
+ end
2021
+
2022
+ module ObsSender0
2023
+ def mailbox
2024
+ elements[3]
2025
+ end
2026
+
2027
+ def CRLF
2028
+ elements[4]
2029
+ end
2030
+ end
2031
+
2032
+ def _nt_obs_sender
2033
+ start_index = index
2034
+ if node_cache[:obs_sender].has_key?(index)
2035
+ cached = node_cache[:obs_sender][index]
2036
+ if cached
2037
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2038
+ @index = cached.interval.end
2039
+ end
2040
+ return cached
2041
+ end
2042
+
2043
+ i0, s0 = index, []
2044
+ if has_terminal?("Sender", false, index)
2045
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 6))
2046
+ @index += 6
2047
+ else
2048
+ terminal_parse_failure("Sender")
2049
+ r1 = nil
2050
+ end
2051
+ s0 << r1
2052
+ if r1
2053
+ s2, i2 = [], index
2054
+ loop do
2055
+ r3 = _nt_WSP
2056
+ if r3
2057
+ s2 << r3
2058
+ else
2059
+ break
2060
+ end
2061
+ end
2062
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
2063
+ s0 << r2
2064
+ if r2
2065
+ if has_terminal?(":", false, index)
2066
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2067
+ @index += 1
2068
+ else
2069
+ terminal_parse_failure(":")
2070
+ r4 = nil
2071
+ end
2072
+ s0 << r4
2073
+ if r4
2074
+ r5 = _nt_mailbox
2075
+ s0 << r5
2076
+ if r5
2077
+ r6 = _nt_CRLF
2078
+ s0 << r6
2079
+ end
2080
+ end
2081
+ end
2082
+ end
2083
+ if s0.last
2084
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2085
+ r0.extend(ObsSender0)
2086
+ else
2087
+ @index = i0
2088
+ r0 = nil
2089
+ end
2090
+
2091
+ node_cache[:obs_sender][start_index] = r0
2092
+
2093
+ r0
2094
+ end
2095
+
2096
+ module ObsReplyTo0
2097
+ def mailbox_list
2098
+ elements[3]
2099
+ end
2100
+
2101
+ def CRLF
2102
+ elements[4]
2103
+ end
2104
+ end
2105
+
2106
+ def _nt_obs_reply_to
2107
+ start_index = index
2108
+ if node_cache[:obs_reply_to].has_key?(index)
2109
+ cached = node_cache[:obs_reply_to][index]
2110
+ if cached
2111
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2112
+ @index = cached.interval.end
2113
+ end
2114
+ return cached
2115
+ end
2116
+
2117
+ i0, s0 = index, []
2118
+ if has_terminal?("Reply-To", false, index)
2119
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 8))
2120
+ @index += 8
2121
+ else
2122
+ terminal_parse_failure("Reply-To")
2123
+ r1 = nil
2124
+ end
2125
+ s0 << r1
2126
+ if r1
2127
+ s2, i2 = [], index
2128
+ loop do
2129
+ r3 = _nt_WSP
2130
+ if r3
2131
+ s2 << r3
2132
+ else
2133
+ break
2134
+ end
2135
+ end
2136
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
2137
+ s0 << r2
2138
+ if r2
2139
+ if has_terminal?(":", false, index)
2140
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2141
+ @index += 1
2142
+ else
2143
+ terminal_parse_failure(":")
2144
+ r4 = nil
2145
+ end
2146
+ s0 << r4
2147
+ if r4
2148
+ r5 = _nt_mailbox_list
2149
+ s0 << r5
2150
+ if r5
2151
+ r6 = _nt_CRLF
2152
+ s0 << r6
2153
+ end
2154
+ end
2155
+ end
2156
+ end
2157
+ if s0.last
2158
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2159
+ r0.extend(ObsReplyTo0)
2160
+ else
2161
+ @index = i0
2162
+ r0 = nil
2163
+ end
2164
+
2165
+ node_cache[:obs_reply_to][start_index] = r0
2166
+
2167
+ r0
2168
+ end
2169
+
2170
+ module ObsTo0
2171
+ def address_list
2172
+ elements[3]
2173
+ end
2174
+
2175
+ def CRLF
2176
+ elements[4]
2177
+ end
2178
+ end
2179
+
2180
+ def _nt_obs_to
2181
+ start_index = index
2182
+ if node_cache[:obs_to].has_key?(index)
2183
+ cached = node_cache[:obs_to][index]
2184
+ if cached
2185
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2186
+ @index = cached.interval.end
2187
+ end
2188
+ return cached
2189
+ end
2190
+
2191
+ i0, s0 = index, []
2192
+ if has_terminal?("To", false, index)
2193
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 2))
2194
+ @index += 2
2195
+ else
2196
+ terminal_parse_failure("To")
2197
+ r1 = nil
2198
+ end
2199
+ s0 << r1
2200
+ if r1
2201
+ s2, i2 = [], index
2202
+ loop do
2203
+ r3 = _nt_WSP
2204
+ if r3
2205
+ s2 << r3
2206
+ else
2207
+ break
2208
+ end
2209
+ end
2210
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
2211
+ s0 << r2
2212
+ if r2
2213
+ if has_terminal?(":", false, index)
2214
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2215
+ @index += 1
2216
+ else
2217
+ terminal_parse_failure(":")
2218
+ r4 = nil
2219
+ end
2220
+ s0 << r4
2221
+ if r4
2222
+ r5 = _nt_address_list
2223
+ s0 << r5
2224
+ if r5
2225
+ r6 = _nt_CRLF
2226
+ s0 << r6
2227
+ end
2228
+ end
2229
+ end
2230
+ end
2231
+ if s0.last
2232
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2233
+ r0.extend(ObsTo0)
2234
+ else
2235
+ @index = i0
2236
+ r0 = nil
2237
+ end
2238
+
2239
+ node_cache[:obs_to][start_index] = r0
2240
+
2241
+ r0
2242
+ end
2243
+
2244
+ module ObsCc0
2245
+ def address_list
2246
+ elements[3]
2247
+ end
2248
+
2249
+ def CRLF
2250
+ elements[4]
2251
+ end
2252
+ end
2253
+
2254
+ def _nt_obs_cc
2255
+ start_index = index
2256
+ if node_cache[:obs_cc].has_key?(index)
2257
+ cached = node_cache[:obs_cc][index]
2258
+ if cached
2259
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2260
+ @index = cached.interval.end
2261
+ end
2262
+ return cached
2263
+ end
2264
+
2265
+ i0, s0 = index, []
2266
+ if has_terminal?("Cc", false, index)
2267
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 2))
2268
+ @index += 2
2269
+ else
2270
+ terminal_parse_failure("Cc")
2271
+ r1 = nil
2272
+ end
2273
+ s0 << r1
2274
+ if r1
2275
+ s2, i2 = [], index
2276
+ loop do
2277
+ r3 = _nt_WSP
2278
+ if r3
2279
+ s2 << r3
2280
+ else
2281
+ break
2282
+ end
2283
+ end
2284
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
2285
+ s0 << r2
2286
+ if r2
2287
+ if has_terminal?(":", false, index)
2288
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2289
+ @index += 1
2290
+ else
2291
+ terminal_parse_failure(":")
2292
+ r4 = nil
2293
+ end
2294
+ s0 << r4
2295
+ if r4
2296
+ r5 = _nt_address_list
2297
+ s0 << r5
2298
+ if r5
2299
+ r6 = _nt_CRLF
2300
+ s0 << r6
2301
+ end
2302
+ end
2303
+ end
2304
+ end
2305
+ if s0.last
2306
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2307
+ r0.extend(ObsCc0)
2308
+ else
2309
+ @index = i0
2310
+ r0 = nil
2311
+ end
2312
+
2313
+ node_cache[:obs_cc][start_index] = r0
2314
+
2315
+ r0
2316
+ end
2317
+
2318
+ module ObsBcc0
2319
+ def CRLF
2320
+ elements[4]
2321
+ end
2322
+ end
2323
+
2324
+ def _nt_obs_bcc
2325
+ start_index = index
2326
+ if node_cache[:obs_bcc].has_key?(index)
2327
+ cached = node_cache[:obs_bcc][index]
2328
+ if cached
2329
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2330
+ @index = cached.interval.end
2331
+ end
2332
+ return cached
2333
+ end
2334
+
2335
+ i0, s0 = index, []
2336
+ if has_terminal?("Bcc", false, index)
2337
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 3))
2338
+ @index += 3
2339
+ else
2340
+ terminal_parse_failure("Bcc")
2341
+ r1 = nil
2342
+ end
2343
+ s0 << r1
2344
+ if r1
2345
+ s2, i2 = [], index
2346
+ loop do
2347
+ r3 = _nt_WSP
2348
+ if r3
2349
+ s2 << r3
2350
+ else
2351
+ break
2352
+ end
2353
+ end
2354
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
2355
+ s0 << r2
2356
+ if r2
2357
+ if has_terminal?(":", false, index)
2358
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2359
+ @index += 1
2360
+ else
2361
+ terminal_parse_failure(":")
2362
+ r4 = nil
2363
+ end
2364
+ s0 << r4
2365
+ if r4
2366
+ i5 = index
2367
+ r6 = _nt_address_list
2368
+ if r6
2369
+ r5 = r6
2370
+ else
2371
+ r8 = _nt_CFWS
2372
+ if r8
2373
+ r7 = r8
2374
+ else
2375
+ r7 = instantiate_node(SyntaxNode,input, index...index)
2376
+ end
2377
+ if r7
2378
+ r5 = r7
2379
+ else
2380
+ @index = i5
2381
+ r5 = nil
2382
+ end
2383
+ end
2384
+ s0 << r5
2385
+ if r5
2386
+ r9 = _nt_CRLF
2387
+ s0 << r9
2388
+ end
2389
+ end
2390
+ end
2391
+ end
2392
+ if s0.last
2393
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2394
+ r0.extend(ObsBcc0)
2395
+ else
2396
+ @index = i0
2397
+ r0 = nil
2398
+ end
2399
+
2400
+ node_cache[:obs_bcc][start_index] = r0
2401
+
2402
+ r0
2403
+ end
2404
+
2405
+ module ObsMessageId0
2406
+ def msg_id
2407
+ elements[3]
2408
+ end
2409
+
2410
+ def CRLF
2411
+ elements[4]
2412
+ end
2413
+ end
2414
+
2415
+ def _nt_obs_message_id
2416
+ start_index = index
2417
+ if node_cache[:obs_message_id].has_key?(index)
2418
+ cached = node_cache[:obs_message_id][index]
2419
+ if cached
2420
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2421
+ @index = cached.interval.end
2422
+ end
2423
+ return cached
2424
+ end
2425
+
2426
+ i0, s0 = index, []
2427
+ if has_terminal?("Message-ID", false, index)
2428
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 10))
2429
+ @index += 10
2430
+ else
2431
+ terminal_parse_failure("Message-ID")
2432
+ r1 = nil
2433
+ end
2434
+ s0 << r1
2435
+ if r1
2436
+ s2, i2 = [], index
2437
+ loop do
2438
+ r3 = _nt_WSP
2439
+ if r3
2440
+ s2 << r3
2441
+ else
2442
+ break
2443
+ end
2444
+ end
2445
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
2446
+ s0 << r2
2447
+ if r2
2448
+ if has_terminal?(":", false, index)
2449
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2450
+ @index += 1
2451
+ else
2452
+ terminal_parse_failure(":")
2453
+ r4 = nil
2454
+ end
2455
+ s0 << r4
2456
+ if r4
2457
+ r5 = _nt_msg_id
2458
+ s0 << r5
2459
+ if r5
2460
+ r6 = _nt_CRLF
2461
+ s0 << r6
2462
+ end
2463
+ end
2464
+ end
2465
+ end
2466
+ if s0.last
2467
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2468
+ r0.extend(ObsMessageId0)
2469
+ else
2470
+ @index = i0
2471
+ r0 = nil
2472
+ end
2473
+
2474
+ node_cache[:obs_message_id][start_index] = r0
2475
+
2476
+ r0
2477
+ end
2478
+
2479
+ module ObsInReplyTo0
2480
+ def CRLF
2481
+ elements[4]
2482
+ end
2483
+ end
2484
+
2485
+ def _nt_obs_in_reply_to
2486
+ start_index = index
2487
+ if node_cache[:obs_in_reply_to].has_key?(index)
2488
+ cached = node_cache[:obs_in_reply_to][index]
2489
+ if cached
2490
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2491
+ @index = cached.interval.end
2492
+ end
2493
+ return cached
2494
+ end
2495
+
2496
+ i0, s0 = index, []
2497
+ if has_terminal?("In-Reply-To", false, index)
2498
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 11))
2499
+ @index += 11
2500
+ else
2501
+ terminal_parse_failure("In-Reply-To")
2502
+ r1 = nil
2503
+ end
2504
+ s0 << r1
2505
+ if r1
2506
+ s2, i2 = [], index
2507
+ loop do
2508
+ r3 = _nt_WSP
2509
+ if r3
2510
+ s2 << r3
2511
+ else
2512
+ break
2513
+ end
2514
+ end
2515
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
2516
+ s0 << r2
2517
+ if r2
2518
+ if has_terminal?(":", false, index)
2519
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2520
+ @index += 1
2521
+ else
2522
+ terminal_parse_failure(":")
2523
+ r4 = nil
2524
+ end
2525
+ s0 << r4
2526
+ if r4
2527
+ s5, i5 = [], index
2528
+ loop do
2529
+ i6 = index
2530
+ r7 = _nt_phrase
2531
+ if r7
2532
+ r6 = r7
2533
+ else
2534
+ r8 = _nt_msg_id
2535
+ if r8
2536
+ r6 = r8
2537
+ else
2538
+ @index = i6
2539
+ r6 = nil
2540
+ end
2541
+ end
2542
+ if r6
2543
+ s5 << r6
2544
+ else
2545
+ break
2546
+ end
2547
+ end
2548
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
2549
+ s0 << r5
2550
+ if r5
2551
+ r9 = _nt_CRLF
2552
+ s0 << r9
2553
+ end
2554
+ end
2555
+ end
2556
+ end
2557
+ if s0.last
2558
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2559
+ r0.extend(ObsInReplyTo0)
2560
+ else
2561
+ @index = i0
2562
+ r0 = nil
2563
+ end
2564
+
2565
+ node_cache[:obs_in_reply_to][start_index] = r0
2566
+
2567
+ r0
2568
+ end
2569
+
2570
+ module ObsReferences0
2571
+ def CRLF
2572
+ elements[4]
2573
+ end
2574
+ end
2575
+
2576
+ def _nt_obs_references
2577
+ start_index = index
2578
+ if node_cache[:obs_references].has_key?(index)
2579
+ cached = node_cache[:obs_references][index]
2580
+ if cached
2581
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2582
+ @index = cached.interval.end
2583
+ end
2584
+ return cached
2585
+ end
2586
+
2587
+ i0, s0 = index, []
2588
+ if has_terminal?("References", false, index)
2589
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 10))
2590
+ @index += 10
2591
+ else
2592
+ terminal_parse_failure("References")
2593
+ r1 = nil
2594
+ end
2595
+ s0 << r1
2596
+ if r1
2597
+ s2, i2 = [], index
2598
+ loop do
2599
+ r3 = _nt_WSP
2600
+ if r3
2601
+ s2 << r3
2602
+ else
2603
+ break
2604
+ end
2605
+ end
2606
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
2607
+ s0 << r2
2608
+ if r2
2609
+ if has_terminal?(":", false, index)
2610
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2611
+ @index += 1
2612
+ else
2613
+ terminal_parse_failure(":")
2614
+ r4 = nil
2615
+ end
2616
+ s0 << r4
2617
+ if r4
2618
+ s5, i5 = [], index
2619
+ loop do
2620
+ i6 = index
2621
+ r7 = _nt_phrase
2622
+ if r7
2623
+ r6 = r7
2624
+ else
2625
+ r8 = _nt_msg_id
2626
+ if r8
2627
+ r6 = r8
2628
+ else
2629
+ @index = i6
2630
+ r6 = nil
2631
+ end
2632
+ end
2633
+ if r6
2634
+ s5 << r6
2635
+ else
2636
+ break
2637
+ end
2638
+ end
2639
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
2640
+ s0 << r5
2641
+ if r5
2642
+ r9 = _nt_CRLF
2643
+ s0 << r9
2644
+ end
2645
+ end
2646
+ end
2647
+ end
2648
+ if s0.last
2649
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2650
+ r0.extend(ObsReferences0)
2651
+ else
2652
+ @index = i0
2653
+ r0 = nil
2654
+ end
2655
+
2656
+ node_cache[:obs_references][start_index] = r0
2657
+
2658
+ r0
2659
+ end
2660
+
2661
+ def _nt_obs_id_left
2662
+ start_index = index
2663
+ if node_cache[:obs_id_left].has_key?(index)
2664
+ cached = node_cache[:obs_id_left][index]
2665
+ if cached
2666
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2667
+ @index = cached.interval.end
2668
+ end
2669
+ return cached
2670
+ end
2671
+
2672
+ r0 = _nt_local_part
2673
+
2674
+ node_cache[:obs_id_left][start_index] = r0
2675
+
2676
+ r0
2677
+ end
2678
+
2679
+ def _nt_obs_id_right
2680
+ start_index = index
2681
+ if node_cache[:obs_id_right].has_key?(index)
2682
+ cached = node_cache[:obs_id_right][index]
2683
+ if cached
2684
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2685
+ @index = cached.interval.end
2686
+ end
2687
+ return cached
2688
+ end
2689
+
2690
+ r0 = _nt_domain
2691
+
2692
+ node_cache[:obs_id_right][start_index] = r0
2693
+
2694
+ r0
2695
+ end
2696
+
2697
+ module ObsSubject0
2698
+ def unstructured
2699
+ elements[3]
2700
+ end
2701
+
2702
+ def CRLF
2703
+ elements[4]
2704
+ end
2705
+ end
2706
+
2707
+ def _nt_obs_subject
2708
+ start_index = index
2709
+ if node_cache[:obs_subject].has_key?(index)
2710
+ cached = node_cache[:obs_subject][index]
2711
+ if cached
2712
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2713
+ @index = cached.interval.end
2714
+ end
2715
+ return cached
2716
+ end
2717
+
2718
+ i0, s0 = index, []
2719
+ if has_terminal?("Subject", false, index)
2720
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 7))
2721
+ @index += 7
2722
+ else
2723
+ terminal_parse_failure("Subject")
2724
+ r1 = nil
2725
+ end
2726
+ s0 << r1
2727
+ if r1
2728
+ s2, i2 = [], index
2729
+ loop do
2730
+ r3 = _nt_WSP
2731
+ if r3
2732
+ s2 << r3
2733
+ else
2734
+ break
2735
+ end
2736
+ end
2737
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
2738
+ s0 << r2
2739
+ if r2
2740
+ if has_terminal?(":", false, index)
2741
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2742
+ @index += 1
2743
+ else
2744
+ terminal_parse_failure(":")
2745
+ r4 = nil
2746
+ end
2747
+ s0 << r4
2748
+ if r4
2749
+ r5 = _nt_unstructured
2750
+ s0 << r5
2751
+ if r5
2752
+ r6 = _nt_CRLF
2753
+ s0 << r6
2754
+ end
2755
+ end
2756
+ end
2757
+ end
2758
+ if s0.last
2759
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2760
+ r0.extend(ObsSubject0)
2761
+ else
2762
+ @index = i0
2763
+ r0 = nil
2764
+ end
2765
+
2766
+ node_cache[:obs_subject][start_index] = r0
2767
+
2768
+ r0
2769
+ end
2770
+
2771
+ module ObsComments0
2772
+ def unstructured
2773
+ elements[3]
2774
+ end
2775
+
2776
+ def CRLF
2777
+ elements[4]
2778
+ end
2779
+ end
2780
+
2781
+ def _nt_obs_comments
2782
+ start_index = index
2783
+ if node_cache[:obs_comments].has_key?(index)
2784
+ cached = node_cache[:obs_comments][index]
2785
+ if cached
2786
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2787
+ @index = cached.interval.end
2788
+ end
2789
+ return cached
2790
+ end
2791
+
2792
+ i0, s0 = index, []
2793
+ if has_terminal?("Comments", false, index)
2794
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 8))
2795
+ @index += 8
2796
+ else
2797
+ terminal_parse_failure("Comments")
2798
+ r1 = nil
2799
+ end
2800
+ s0 << r1
2801
+ if r1
2802
+ s2, i2 = [], index
2803
+ loop do
2804
+ r3 = _nt_WSP
2805
+ if r3
2806
+ s2 << r3
2807
+ else
2808
+ break
2809
+ end
2810
+ end
2811
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
2812
+ s0 << r2
2813
+ if r2
2814
+ if has_terminal?(":", false, index)
2815
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2816
+ @index += 1
2817
+ else
2818
+ terminal_parse_failure(":")
2819
+ r4 = nil
2820
+ end
2821
+ s0 << r4
2822
+ if r4
2823
+ r5 = _nt_unstructured
2824
+ s0 << r5
2825
+ if r5
2826
+ r6 = _nt_CRLF
2827
+ s0 << r6
2828
+ end
2829
+ end
2830
+ end
2831
+ end
2832
+ if s0.last
2833
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2834
+ r0.extend(ObsComments0)
2835
+ else
2836
+ @index = i0
2837
+ r0 = nil
2838
+ end
2839
+
2840
+ node_cache[:obs_comments][start_index] = r0
2841
+
2842
+ r0
2843
+ end
2844
+
2845
+ module ObsKeywords0
2846
+ def obs_phrase_list
2847
+ elements[3]
2848
+ end
2849
+
2850
+ def CRLF
2851
+ elements[4]
2852
+ end
2853
+ end
2854
+
2855
+ def _nt_obs_keywords
2856
+ start_index = index
2857
+ if node_cache[:obs_keywords].has_key?(index)
2858
+ cached = node_cache[:obs_keywords][index]
2859
+ if cached
2860
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2861
+ @index = cached.interval.end
2862
+ end
2863
+ return cached
2864
+ end
2865
+
2866
+ i0, s0 = index, []
2867
+ if has_terminal?("Keywords", false, index)
2868
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 8))
2869
+ @index += 8
2870
+ else
2871
+ terminal_parse_failure("Keywords")
2872
+ r1 = nil
2873
+ end
2874
+ s0 << r1
2875
+ if r1
2876
+ s2, i2 = [], index
2877
+ loop do
2878
+ r3 = _nt_WSP
2879
+ if r3
2880
+ s2 << r3
2881
+ else
2882
+ break
2883
+ end
2884
+ end
2885
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
2886
+ s0 << r2
2887
+ if r2
2888
+ if has_terminal?(":", false, index)
2889
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2890
+ @index += 1
2891
+ else
2892
+ terminal_parse_failure(":")
2893
+ r4 = nil
2894
+ end
2895
+ s0 << r4
2896
+ if r4
2897
+ r5 = _nt_obs_phrase_list
2898
+ s0 << r5
2899
+ if r5
2900
+ r6 = _nt_CRLF
2901
+ s0 << r6
2902
+ end
2903
+ end
2904
+ end
2905
+ end
2906
+ if s0.last
2907
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2908
+ r0.extend(ObsKeywords0)
2909
+ else
2910
+ @index = i0
2911
+ r0 = nil
2912
+ end
2913
+
2914
+ node_cache[:obs_keywords][start_index] = r0
2915
+
2916
+ r0
2917
+ end
2918
+
2919
+ module ObsResentFrom0
2920
+ def mailbox_list
2921
+ elements[3]
2922
+ end
2923
+
2924
+ def CRLF
2925
+ elements[4]
2926
+ end
2927
+ end
2928
+
2929
+ def _nt_obs_resent_from
2930
+ start_index = index
2931
+ if node_cache[:obs_resent_from].has_key?(index)
2932
+ cached = node_cache[:obs_resent_from][index]
2933
+ if cached
2934
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2935
+ @index = cached.interval.end
2936
+ end
2937
+ return cached
2938
+ end
2939
+
2940
+ i0, s0 = index, []
2941
+ if has_terminal?("Resent-From", false, index)
2942
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 11))
2943
+ @index += 11
2944
+ else
2945
+ terminal_parse_failure("Resent-From")
2946
+ r1 = nil
2947
+ end
2948
+ s0 << r1
2949
+ if r1
2950
+ s2, i2 = [], index
2951
+ loop do
2952
+ r3 = _nt_WSP
2953
+ if r3
2954
+ s2 << r3
2955
+ else
2956
+ break
2957
+ end
2958
+ end
2959
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
2960
+ s0 << r2
2961
+ if r2
2962
+ if has_terminal?(":", false, index)
2963
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2964
+ @index += 1
2965
+ else
2966
+ terminal_parse_failure(":")
2967
+ r4 = nil
2968
+ end
2969
+ s0 << r4
2970
+ if r4
2971
+ r5 = _nt_mailbox_list
2972
+ s0 << r5
2973
+ if r5
2974
+ r6 = _nt_CRLF
2975
+ s0 << r6
2976
+ end
2977
+ end
2978
+ end
2979
+ end
2980
+ if s0.last
2981
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2982
+ r0.extend(ObsResentFrom0)
2983
+ else
2984
+ @index = i0
2985
+ r0 = nil
2986
+ end
2987
+
2988
+ node_cache[:obs_resent_from][start_index] = r0
2989
+
2990
+ r0
2991
+ end
2992
+
2993
+ module ObsResentSend0
2994
+ def mailbox
2995
+ elements[3]
2996
+ end
2997
+
2998
+ def CRLF
2999
+ elements[4]
3000
+ end
3001
+ end
3002
+
3003
+ def _nt_obs_resent_send
3004
+ start_index = index
3005
+ if node_cache[:obs_resent_send].has_key?(index)
3006
+ cached = node_cache[:obs_resent_send][index]
3007
+ if cached
3008
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3009
+ @index = cached.interval.end
3010
+ end
3011
+ return cached
3012
+ end
3013
+
3014
+ i0, s0 = index, []
3015
+ if has_terminal?("Resent-Sender", false, index)
3016
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 13))
3017
+ @index += 13
3018
+ else
3019
+ terminal_parse_failure("Resent-Sender")
3020
+ r1 = nil
3021
+ end
3022
+ s0 << r1
3023
+ if r1
3024
+ s2, i2 = [], index
3025
+ loop do
3026
+ r3 = _nt_WSP
3027
+ if r3
3028
+ s2 << r3
3029
+ else
3030
+ break
3031
+ end
3032
+ end
3033
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3034
+ s0 << r2
3035
+ if r2
3036
+ if has_terminal?(":", false, index)
3037
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
3038
+ @index += 1
3039
+ else
3040
+ terminal_parse_failure(":")
3041
+ r4 = nil
3042
+ end
3043
+ s0 << r4
3044
+ if r4
3045
+ r5 = _nt_mailbox
3046
+ s0 << r5
3047
+ if r5
3048
+ r6 = _nt_CRLF
3049
+ s0 << r6
3050
+ end
3051
+ end
3052
+ end
3053
+ end
3054
+ if s0.last
3055
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3056
+ r0.extend(ObsResentSend0)
3057
+ else
3058
+ @index = i0
3059
+ r0 = nil
3060
+ end
3061
+
3062
+ node_cache[:obs_resent_send][start_index] = r0
3063
+
3064
+ r0
3065
+ end
3066
+
3067
+ module ObsResentDate0
3068
+ def date_time
3069
+ elements[3]
3070
+ end
3071
+
3072
+ def CRLF
3073
+ elements[4]
3074
+ end
3075
+ end
3076
+
3077
+ def _nt_obs_resent_date
3078
+ start_index = index
3079
+ if node_cache[:obs_resent_date].has_key?(index)
3080
+ cached = node_cache[:obs_resent_date][index]
3081
+ if cached
3082
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3083
+ @index = cached.interval.end
3084
+ end
3085
+ return cached
3086
+ end
3087
+
3088
+ i0, s0 = index, []
3089
+ if has_terminal?("Resent-Date", false, index)
3090
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 11))
3091
+ @index += 11
3092
+ else
3093
+ terminal_parse_failure("Resent-Date")
3094
+ r1 = nil
3095
+ end
3096
+ s0 << r1
3097
+ if r1
3098
+ s2, i2 = [], index
3099
+ loop do
3100
+ r3 = _nt_WSP
3101
+ if r3
3102
+ s2 << r3
3103
+ else
3104
+ break
3105
+ end
3106
+ end
3107
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3108
+ s0 << r2
3109
+ if r2
3110
+ if has_terminal?(":", false, index)
3111
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
3112
+ @index += 1
3113
+ else
3114
+ terminal_parse_failure(":")
3115
+ r4 = nil
3116
+ end
3117
+ s0 << r4
3118
+ if r4
3119
+ r5 = _nt_date_time
3120
+ s0 << r5
3121
+ if r5
3122
+ r6 = _nt_CRLF
3123
+ s0 << r6
3124
+ end
3125
+ end
3126
+ end
3127
+ end
3128
+ if s0.last
3129
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3130
+ r0.extend(ObsResentDate0)
3131
+ else
3132
+ @index = i0
3133
+ r0 = nil
3134
+ end
3135
+
3136
+ node_cache[:obs_resent_date][start_index] = r0
3137
+
3138
+ r0
3139
+ end
3140
+
3141
+ module ObsResentTo0
3142
+ def address_list
3143
+ elements[3]
3144
+ end
3145
+
3146
+ def CRLF
3147
+ elements[4]
3148
+ end
3149
+ end
3150
+
3151
+ def _nt_obs_resent_to
3152
+ start_index = index
3153
+ if node_cache[:obs_resent_to].has_key?(index)
3154
+ cached = node_cache[:obs_resent_to][index]
3155
+ if cached
3156
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3157
+ @index = cached.interval.end
3158
+ end
3159
+ return cached
3160
+ end
3161
+
3162
+ i0, s0 = index, []
3163
+ if has_terminal?("Resent-To", false, index)
3164
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 9))
3165
+ @index += 9
3166
+ else
3167
+ terminal_parse_failure("Resent-To")
3168
+ r1 = nil
3169
+ end
3170
+ s0 << r1
3171
+ if r1
3172
+ s2, i2 = [], index
3173
+ loop do
3174
+ r3 = _nt_WSP
3175
+ if r3
3176
+ s2 << r3
3177
+ else
3178
+ break
3179
+ end
3180
+ end
3181
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3182
+ s0 << r2
3183
+ if r2
3184
+ if has_terminal?(":", false, index)
3185
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
3186
+ @index += 1
3187
+ else
3188
+ terminal_parse_failure(":")
3189
+ r4 = nil
3190
+ end
3191
+ s0 << r4
3192
+ if r4
3193
+ r5 = _nt_address_list
3194
+ s0 << r5
3195
+ if r5
3196
+ r6 = _nt_CRLF
3197
+ s0 << r6
3198
+ end
3199
+ end
3200
+ end
3201
+ end
3202
+ if s0.last
3203
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3204
+ r0.extend(ObsResentTo0)
3205
+ else
3206
+ @index = i0
3207
+ r0 = nil
3208
+ end
3209
+
3210
+ node_cache[:obs_resent_to][start_index] = r0
3211
+
3212
+ r0
3213
+ end
3214
+
3215
+ module ObsResentCc0
3216
+ def address_list
3217
+ elements[3]
3218
+ end
3219
+
3220
+ def CRLF
3221
+ elements[4]
3222
+ end
3223
+ end
3224
+
3225
+ def _nt_obs_resent_cc
3226
+ start_index = index
3227
+ if node_cache[:obs_resent_cc].has_key?(index)
3228
+ cached = node_cache[:obs_resent_cc][index]
3229
+ if cached
3230
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3231
+ @index = cached.interval.end
3232
+ end
3233
+ return cached
3234
+ end
3235
+
3236
+ i0, s0 = index, []
3237
+ if has_terminal?("Resent-Cc", false, index)
3238
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 9))
3239
+ @index += 9
3240
+ else
3241
+ terminal_parse_failure("Resent-Cc")
3242
+ r1 = nil
3243
+ end
3244
+ s0 << r1
3245
+ if r1
3246
+ s2, i2 = [], index
3247
+ loop do
3248
+ r3 = _nt_WSP
3249
+ if r3
3250
+ s2 << r3
3251
+ else
3252
+ break
3253
+ end
3254
+ end
3255
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3256
+ s0 << r2
3257
+ if r2
3258
+ if has_terminal?(":", false, index)
3259
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
3260
+ @index += 1
3261
+ else
3262
+ terminal_parse_failure(":")
3263
+ r4 = nil
3264
+ end
3265
+ s0 << r4
3266
+ if r4
3267
+ r5 = _nt_address_list
3268
+ s0 << r5
3269
+ if r5
3270
+ r6 = _nt_CRLF
3271
+ s0 << r6
3272
+ end
3273
+ end
3274
+ end
3275
+ end
3276
+ if s0.last
3277
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3278
+ r0.extend(ObsResentCc0)
3279
+ else
3280
+ @index = i0
3281
+ r0 = nil
3282
+ end
3283
+
3284
+ node_cache[:obs_resent_cc][start_index] = r0
3285
+
3286
+ r0
3287
+ end
3288
+
3289
+ module ObsResentBcc0
3290
+ def CRLF
3291
+ elements[4]
3292
+ end
3293
+ end
3294
+
3295
+ def _nt_obs_resent_bcc
3296
+ start_index = index
3297
+ if node_cache[:obs_resent_bcc].has_key?(index)
3298
+ cached = node_cache[:obs_resent_bcc][index]
3299
+ if cached
3300
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3301
+ @index = cached.interval.end
3302
+ end
3303
+ return cached
3304
+ end
3305
+
3306
+ i0, s0 = index, []
3307
+ if has_terminal?("Resent-Bcc", false, index)
3308
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 10))
3309
+ @index += 10
3310
+ else
3311
+ terminal_parse_failure("Resent-Bcc")
3312
+ r1 = nil
3313
+ end
3314
+ s0 << r1
3315
+ if r1
3316
+ s2, i2 = [], index
3317
+ loop do
3318
+ r3 = _nt_WSP
3319
+ if r3
3320
+ s2 << r3
3321
+ else
3322
+ break
3323
+ end
3324
+ end
3325
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3326
+ s0 << r2
3327
+ if r2
3328
+ if has_terminal?(":", false, index)
3329
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
3330
+ @index += 1
3331
+ else
3332
+ terminal_parse_failure(":")
3333
+ r4 = nil
3334
+ end
3335
+ s0 << r4
3336
+ if r4
3337
+ i5 = index
3338
+ r6 = _nt_address_list
3339
+ if r6
3340
+ r5 = r6
3341
+ else
3342
+ r8 = _nt_CFWS
3343
+ if r8
3344
+ r7 = r8
3345
+ else
3346
+ r7 = instantiate_node(SyntaxNode,input, index...index)
3347
+ end
3348
+ if r7
3349
+ r5 = r7
3350
+ else
3351
+ @index = i5
3352
+ r5 = nil
3353
+ end
3354
+ end
3355
+ s0 << r5
3356
+ if r5
3357
+ r9 = _nt_CRLF
3358
+ s0 << r9
3359
+ end
3360
+ end
3361
+ end
3362
+ end
3363
+ if s0.last
3364
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3365
+ r0.extend(ObsResentBcc0)
3366
+ else
3367
+ @index = i0
3368
+ r0 = nil
3369
+ end
3370
+
3371
+ node_cache[:obs_resent_bcc][start_index] = r0
3372
+
3373
+ r0
3374
+ end
3375
+
3376
+ module ObsResentMid0
3377
+ def msg_id
3378
+ elements[3]
3379
+ end
3380
+
3381
+ def CRLF
3382
+ elements[4]
3383
+ end
3384
+ end
3385
+
3386
+ def _nt_obs_resent_mid
3387
+ start_index = index
3388
+ if node_cache[:obs_resent_mid].has_key?(index)
3389
+ cached = node_cache[:obs_resent_mid][index]
3390
+ if cached
3391
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3392
+ @index = cached.interval.end
3393
+ end
3394
+ return cached
3395
+ end
3396
+
3397
+ i0, s0 = index, []
3398
+ if has_terminal?("Resent-Message-ID", false, index)
3399
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 17))
3400
+ @index += 17
3401
+ else
3402
+ terminal_parse_failure("Resent-Message-ID")
3403
+ r1 = nil
3404
+ end
3405
+ s0 << r1
3406
+ if r1
3407
+ s2, i2 = [], index
3408
+ loop do
3409
+ r3 = _nt_WSP
3410
+ if r3
3411
+ s2 << r3
3412
+ else
3413
+ break
3414
+ end
3415
+ end
3416
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3417
+ s0 << r2
3418
+ if r2
3419
+ if has_terminal?(":", false, index)
3420
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
3421
+ @index += 1
3422
+ else
3423
+ terminal_parse_failure(":")
3424
+ r4 = nil
3425
+ end
3426
+ s0 << r4
3427
+ if r4
3428
+ r5 = _nt_msg_id
3429
+ s0 << r5
3430
+ if r5
3431
+ r6 = _nt_CRLF
3432
+ s0 << r6
3433
+ end
3434
+ end
3435
+ end
3436
+ end
3437
+ if s0.last
3438
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3439
+ r0.extend(ObsResentMid0)
3440
+ else
3441
+ @index = i0
3442
+ r0 = nil
3443
+ end
3444
+
3445
+ node_cache[:obs_resent_mid][start_index] = r0
3446
+
3447
+ r0
3448
+ end
3449
+
3450
+ module ObsResentRply0
3451
+ def address_list
3452
+ elements[3]
3453
+ end
3454
+
3455
+ def CRLF
3456
+ elements[4]
3457
+ end
3458
+ end
3459
+
3460
+ def _nt_obs_resent_rply
3461
+ start_index = index
3462
+ if node_cache[:obs_resent_rply].has_key?(index)
3463
+ cached = node_cache[:obs_resent_rply][index]
3464
+ if cached
3465
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3466
+ @index = cached.interval.end
3467
+ end
3468
+ return cached
3469
+ end
3470
+
3471
+ i0, s0 = index, []
3472
+ if has_terminal?("Resent-Reply-To", false, index)
3473
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 15))
3474
+ @index += 15
3475
+ else
3476
+ terminal_parse_failure("Resent-Reply-To")
3477
+ r1 = nil
3478
+ end
3479
+ s0 << r1
3480
+ if r1
3481
+ s2, i2 = [], index
3482
+ loop do
3483
+ r3 = _nt_WSP
3484
+ if r3
3485
+ s2 << r3
3486
+ else
3487
+ break
3488
+ end
3489
+ end
3490
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3491
+ s0 << r2
3492
+ if r2
3493
+ if has_terminal?(":", false, index)
3494
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
3495
+ @index += 1
3496
+ else
3497
+ terminal_parse_failure(":")
3498
+ r4 = nil
3499
+ end
3500
+ s0 << r4
3501
+ if r4
3502
+ r5 = _nt_address_list
3503
+ s0 << r5
3504
+ if r5
3505
+ r6 = _nt_CRLF
3506
+ s0 << r6
3507
+ end
3508
+ end
3509
+ end
3510
+ end
3511
+ if s0.last
3512
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3513
+ r0.extend(ObsResentRply0)
3514
+ else
3515
+ @index = i0
3516
+ r0 = nil
3517
+ end
3518
+
3519
+ node_cache[:obs_resent_rply][start_index] = r0
3520
+
3521
+ r0
3522
+ end
3523
+
3524
+ module ObsReturn0
3525
+ def path
3526
+ elements[3]
3527
+ end
3528
+
3529
+ def CRLF
3530
+ elements[4]
3531
+ end
3532
+ end
3533
+
3534
+ def _nt_obs_return
3535
+ start_index = index
3536
+ if node_cache[:obs_return].has_key?(index)
3537
+ cached = node_cache[:obs_return][index]
3538
+ if cached
3539
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3540
+ @index = cached.interval.end
3541
+ end
3542
+ return cached
3543
+ end
3544
+
3545
+ i0, s0 = index, []
3546
+ if has_terminal?("Return-Path", false, index)
3547
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 11))
3548
+ @index += 11
3549
+ else
3550
+ terminal_parse_failure("Return-Path")
3551
+ r1 = nil
3552
+ end
3553
+ s0 << r1
3554
+ if r1
3555
+ s2, i2 = [], index
3556
+ loop do
3557
+ r3 = _nt_WSP
3558
+ if r3
3559
+ s2 << r3
3560
+ else
3561
+ break
3562
+ end
3563
+ end
3564
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3565
+ s0 << r2
3566
+ if r2
3567
+ if has_terminal?(":", false, index)
3568
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
3569
+ @index += 1
3570
+ else
3571
+ terminal_parse_failure(":")
3572
+ r4 = nil
3573
+ end
3574
+ s0 << r4
3575
+ if r4
3576
+ r5 = _nt_path
3577
+ s0 << r5
3578
+ if r5
3579
+ r6 = _nt_CRLF
3580
+ s0 << r6
3581
+ end
3582
+ end
3583
+ end
3584
+ end
3585
+ if s0.last
3586
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3587
+ r0.extend(ObsReturn0)
3588
+ else
3589
+ @index = i0
3590
+ r0 = nil
3591
+ end
3592
+
3593
+ node_cache[:obs_return][start_index] = r0
3594
+
3595
+ r0
3596
+ end
3597
+
3598
+ module ObsReceived0
3599
+ def name_val_list
3600
+ elements[3]
3601
+ end
3602
+
3603
+ def CRLF
3604
+ elements[4]
3605
+ end
3606
+ end
3607
+
3608
+ def _nt_obs_received
3609
+ start_index = index
3610
+ if node_cache[:obs_received].has_key?(index)
3611
+ cached = node_cache[:obs_received][index]
3612
+ if cached
3613
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3614
+ @index = cached.interval.end
3615
+ end
3616
+ return cached
3617
+ end
3618
+
3619
+ i0, s0 = index, []
3620
+ if has_terminal?("Received", false, index)
3621
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 8))
3622
+ @index += 8
3623
+ else
3624
+ terminal_parse_failure("Received")
3625
+ r1 = nil
3626
+ end
3627
+ s0 << r1
3628
+ if r1
3629
+ s2, i2 = [], index
3630
+ loop do
3631
+ r3 = _nt_WSP
3632
+ if r3
3633
+ s2 << r3
3634
+ else
3635
+ break
3636
+ end
3637
+ end
3638
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3639
+ s0 << r2
3640
+ if r2
3641
+ if has_terminal?(":", false, index)
3642
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
3643
+ @index += 1
3644
+ else
3645
+ terminal_parse_failure(":")
3646
+ r4 = nil
3647
+ end
3648
+ s0 << r4
3649
+ if r4
3650
+ r5 = _nt_name_val_list
3651
+ s0 << r5
3652
+ if r5
3653
+ r6 = _nt_CRLF
3654
+ s0 << r6
3655
+ end
3656
+ end
3657
+ end
3658
+ end
3659
+ if s0.last
3660
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3661
+ r0.extend(ObsReceived0)
3662
+ else
3663
+ @index = i0
3664
+ r0 = nil
3665
+ end
3666
+
3667
+ node_cache[:obs_received][start_index] = r0
3668
+
3669
+ r0
3670
+ end
3671
+
3672
+ def _nt_obs_path
3673
+ start_index = index
3674
+ if node_cache[:obs_path].has_key?(index)
3675
+ cached = node_cache[:obs_path][index]
3676
+ if cached
3677
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3678
+ @index = cached.interval.end
3679
+ end
3680
+ return cached
3681
+ end
3682
+
3683
+ r0 = _nt_obs_angle_addr
3684
+
3685
+ node_cache[:obs_path][start_index] = r0
3686
+
3687
+ r0
3688
+ end
3689
+
3690
+ module ObsOptional0
3691
+ def field_name
3692
+ elements[0]
3693
+ end
3694
+
3695
+ def unstructured
3696
+ elements[3]
3697
+ end
3698
+
3699
+ def CRLF
3700
+ elements[4]
3701
+ end
3702
+ end
3703
+
3704
+ def _nt_obs_optional
3705
+ start_index = index
3706
+ if node_cache[:obs_optional].has_key?(index)
3707
+ cached = node_cache[:obs_optional][index]
3708
+ if cached
3709
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3710
+ @index = cached.interval.end
3711
+ end
3712
+ return cached
3713
+ end
3714
+
3715
+ i0, s0 = index, []
3716
+ r1 = _nt_field_name
3717
+ s0 << r1
3718
+ if r1
3719
+ s2, i2 = [], index
3720
+ loop do
3721
+ r3 = _nt_WSP
3722
+ if r3
3723
+ s2 << r3
3724
+ else
3725
+ break
3726
+ end
3727
+ end
3728
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3729
+ s0 << r2
3730
+ if r2
3731
+ if has_terminal?(":", false, index)
3732
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
3733
+ @index += 1
3734
+ else
3735
+ terminal_parse_failure(":")
3736
+ r4 = nil
3737
+ end
3738
+ s0 << r4
3739
+ if r4
3740
+ r5 = _nt_unstructured
3741
+ s0 << r5
3742
+ if r5
3743
+ r6 = _nt_CRLF
3744
+ s0 << r6
3745
+ end
3746
+ end
3747
+ end
3748
+ end
3749
+ if s0.last
3750
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3751
+ r0.extend(ObsOptional0)
3752
+ else
3753
+ @index = i0
3754
+ r0 = nil
3755
+ end
3756
+
3757
+ node_cache[:obs_optional][start_index] = r0
3758
+
3759
+ r0
3760
+ end
3761
+
3762
+ end
3763
+
3764
+ class RFC2822ObsoleteParser < Treetop::Runtime::CompiledParser
3765
+ include RFC2822Obsolete
3766
+ end
3767
+
3768
+ end