mail 2.5.5 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.rdoc +8 -9
  3. data/CONTRIBUTING.md +13 -0
  4. data/Dependencies.txt +0 -1
  5. data/Gemfile +7 -24
  6. data/README.md +36 -15
  7. data/Rakefile +10 -2
  8. data/VERSION +4 -0
  9. data/lib/mail.rb +1 -1
  10. data/lib/mail/body.rb +2 -2
  11. data/lib/mail/check_delivery_params.rb +10 -47
  12. data/lib/mail/core_extensions/string.rb +12 -2
  13. data/lib/mail/elements/address.rb +38 -82
  14. data/lib/mail/elements/address_list.rb +19 -42
  15. data/lib/mail/elements/content_disposition_element.rb +3 -7
  16. data/lib/mail/elements/content_location_element.rb +2 -6
  17. data/lib/mail/elements/content_transfer_encoding_element.rb +3 -10
  18. data/lib/mail/elements/content_type_element.rb +4 -8
  19. data/lib/mail/elements/date_time_element.rb +3 -7
  20. data/lib/mail/elements/envelope_from_element.rb +3 -11
  21. data/lib/mail/elements/message_ids_element.rb +1 -6
  22. data/lib/mail/elements/mime_version_element.rb +3 -7
  23. data/lib/mail/elements/phrase_list.rb +2 -7
  24. data/lib/mail/elements/received_element.rb +3 -7
  25. data/lib/mail/encodings.rb +0 -1
  26. data/lib/mail/envelope.rb +0 -5
  27. data/lib/mail/field.rb +53 -17
  28. data/lib/mail/field_list.rb +18 -18
  29. data/lib/mail/fields/common/common_address.rb +15 -20
  30. data/lib/mail/fields/common/common_date.rb +0 -7
  31. data/lib/mail/fields/common/common_field.rb +1 -1
  32. data/lib/mail/fields/content_transfer_encoding_field.rb +0 -6
  33. data/lib/mail/fields/resent_sender_field.rb +1 -1
  34. data/lib/mail/fields/sender_field.rb +1 -1
  35. data/lib/mail/fields/unstructured_field.rb +7 -1
  36. data/lib/mail/header.rb +8 -22
  37. data/lib/mail/mail.rb +12 -0
  38. data/lib/mail/matchers/has_sent_mail.rb +34 -1
  39. data/lib/mail/message.rb +18 -11
  40. data/lib/mail/multibyte/unicode.rb +1 -1
  41. data/lib/mail/network/delivery_methods/exim.rb +10 -6
  42. data/lib/mail/network/delivery_methods/file_delivery.rb +8 -4
  43. data/lib/mail/network/delivery_methods/sendmail.rb +7 -9
  44. data/lib/mail/network/delivery_methods/smtp.rb +5 -2
  45. data/lib/mail/network/delivery_methods/smtp_connection.rb +6 -2
  46. data/lib/mail/network/delivery_methods/test_mailer.rb +8 -5
  47. data/lib/mail/network/retriever_methods/imap.rb +18 -13
  48. data/lib/mail/parsers.rb +26 -0
  49. data/lib/mail/parsers/address_lists_parser.rb +132 -0
  50. data/lib/mail/parsers/content_disposition_parser.rb +67 -0
  51. data/lib/mail/parsers/content_location_parser.rb +35 -0
  52. data/lib/mail/parsers/content_transfer_encoding_parser.rb +33 -0
  53. data/lib/mail/parsers/content_type_parser.rb +64 -0
  54. data/lib/mail/parsers/date_time_parser.rb +36 -0
  55. data/lib/mail/parsers/envelope_from_parser.rb +45 -0
  56. data/lib/mail/parsers/message_ids_parser.rb +39 -0
  57. data/lib/mail/parsers/mime_version_parser.rb +41 -0
  58. data/lib/mail/parsers/phrase_lists_parser.rb +33 -0
  59. data/lib/mail/parsers/ragel.rb +17 -0
  60. data/lib/mail/parsers/ragel/common.rl +184 -0
  61. data/lib/mail/parsers/ragel/date_time.rl +30 -0
  62. data/lib/mail/parsers/ragel/parser_info.rb +61 -0
  63. data/lib/mail/parsers/ragel/ruby.rb +29 -0
  64. data/lib/mail/parsers/ragel/ruby/machines/address_lists_machine.rb +14864 -0
  65. data/lib/mail/parsers/ragel/ruby/machines/address_lists_machine.rb.rl +37 -0
  66. data/lib/mail/parsers/ragel/ruby/machines/content_disposition_machine.rb +751 -0
  67. data/lib/mail/parsers/ragel/ruby/machines/content_disposition_machine.rb.rl +37 -0
  68. data/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb +614 -0
  69. data/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb.rl +37 -0
  70. data/lib/mail/parsers/ragel/ruby/machines/content_transfer_encoding_machine.rb +447 -0
  71. data/lib/mail/parsers/ragel/ruby/machines/content_transfer_encoding_machine.rb.rl +37 -0
  72. data/lib/mail/parsers/ragel/ruby/machines/content_type_machine.rb +825 -0
  73. data/lib/mail/parsers/ragel/ruby/machines/content_type_machine.rb.rl +37 -0
  74. data/lib/mail/parsers/ragel/ruby/machines/date_time_machine.rb +817 -0
  75. data/lib/mail/parsers/ragel/ruby/machines/date_time_machine.rb.rl +37 -0
  76. data/lib/mail/parsers/ragel/ruby/machines/envelope_from_machine.rb +2129 -0
  77. data/lib/mail/parsers/ragel/ruby/machines/envelope_from_machine.rb.rl +37 -0
  78. data/lib/mail/parsers/ragel/ruby/machines/message_ids_machine.rb +1570 -0
  79. data/lib/mail/parsers/ragel/ruby/machines/message_ids_machine.rb.rl +37 -0
  80. data/lib/mail/parsers/ragel/ruby/machines/mime_version_machine.rb +440 -0
  81. data/lib/mail/parsers/ragel/ruby/machines/mime_version_machine.rb.rl +37 -0
  82. data/lib/mail/parsers/ragel/ruby/machines/phrase_lists_machine.rb +564 -0
  83. data/lib/mail/parsers/ragel/ruby/machines/phrase_lists_machine.rb.rl +37 -0
  84. data/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl +51 -0
  85. data/lib/mail/parsers/ragel/ruby/machines/received_machine.rb +5144 -0
  86. data/lib/mail/parsers/ragel/ruby/machines/received_machine.rb.rl +37 -0
  87. data/lib/mail/parsers/ragel/ruby/parser.rb.rl.erb +37 -0
  88. data/lib/mail/parsers/received_parser.rb +47 -0
  89. data/lib/mail/parts_list.rb +4 -2
  90. data/lib/mail/patterns.rb +3 -1
  91. data/lib/mail/utilities.rb +3 -1
  92. data/lib/mail/version.rb +1 -1
  93. data/lib/mail/version_specific/ruby_1_8.rb +1 -1
  94. data/lib/mail/version_specific/ruby_1_9.rb +13 -1
  95. metadata +55 -51
  96. data/lib/VERSION +0 -4
  97. data/lib/load_parsers.rb +0 -35
  98. data/lib/mail/parsers/address_lists.rb +0 -64
  99. data/lib/mail/parsers/address_lists.treetop +0 -19
  100. data/lib/mail/parsers/content_disposition.rb +0 -535
  101. data/lib/mail/parsers/content_disposition.treetop +0 -46
  102. data/lib/mail/parsers/content_location.rb +0 -139
  103. data/lib/mail/parsers/content_location.treetop +0 -20
  104. data/lib/mail/parsers/content_transfer_encoding.rb +0 -201
  105. data/lib/mail/parsers/content_transfer_encoding.treetop +0 -18
  106. data/lib/mail/parsers/content_type.rb +0 -971
  107. data/lib/mail/parsers/content_type.treetop +0 -68
  108. data/lib/mail/parsers/date_time.rb +0 -114
  109. data/lib/mail/parsers/date_time.treetop +0 -11
  110. data/lib/mail/parsers/envelope_from.rb +0 -194
  111. data/lib/mail/parsers/envelope_from.treetop +0 -32
  112. data/lib/mail/parsers/message_ids.rb +0 -45
  113. data/lib/mail/parsers/message_ids.treetop +0 -15
  114. data/lib/mail/parsers/mime_version.rb +0 -144
  115. data/lib/mail/parsers/mime_version.treetop +0 -19
  116. data/lib/mail/parsers/phrase_lists.rb +0 -45
  117. data/lib/mail/parsers/phrase_lists.treetop +0 -15
  118. data/lib/mail/parsers/received.rb +0 -71
  119. data/lib/mail/parsers/received.treetop +0 -11
  120. data/lib/mail/parsers/rfc2045.rb +0 -421
  121. data/lib/mail/parsers/rfc2045.treetop +0 -35
  122. data/lib/mail/parsers/rfc2822.rb +0 -5397
  123. data/lib/mail/parsers/rfc2822.treetop +0 -408
  124. data/lib/mail/parsers/rfc2822_obsolete.rb +0 -3768
  125. data/lib/mail/parsers/rfc2822_obsolete.treetop +0 -241
  126. data/lib/tasks/corpus.rake +0 -125
  127. data/lib/tasks/treetop.rake +0 -10
@@ -1,408 +0,0 @@
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
- def dig_comments(comments, elements)
227
- elements.each { |elem|
228
- if elem.respond_to?(:comment)
229
- comments << elem.comment
230
- end
231
- dig_comments(comments, elem.elements) if elem.elements
232
- }
233
- end
234
-
235
- def comments
236
- comments = []
237
- dig_comments(comments, elements)
238
- comments
239
- end
240
- }
241
- end
242
-
243
- rule address
244
- group {
245
-
246
- def dig_comments(comments, elements)
247
- elements.each { |elem|
248
- if elem.respond_to?(:comment)
249
- comments << elem.comment
250
- end
251
- dig_comments(comments, elem.elements) if elem.elements
252
- }
253
- end
254
-
255
- def comments
256
- comments = []
257
- dig_comments(comments, elements)
258
- comments
259
- end
260
-
261
- } /
262
- mailbox
263
- end
264
-
265
- rule address_list
266
- first_addr:address? other_addr:(FWS* ("," / ";") FWS* addr_value:address?)*
267
- end
268
-
269
- rule date_time
270
- ( day_of_week ",")? date FWS time CFWS?
271
- end
272
-
273
- rule day_of_week
274
- (FWS? day_name) / obs_day_of_week
275
- end
276
-
277
- rule day_name
278
- "Mon" / "Tue" / "Wed" / "Thu" /
279
- "Fri" / "Sat" / "Sun"
280
- end
281
-
282
- rule date
283
- day month year
284
- end
285
-
286
- rule year
287
- DIGIT DIGIT DIGIT DIGIT / obs_year
288
- end
289
-
290
- rule month
291
- (FWS month_name FWS) / obs_month
292
- end
293
-
294
- rule month_name
295
- "Jan" / "Feb" / "Mar" / "Apr" /
296
- "May" / "Jun" / "Jul" / "Aug" /
297
- "Sep" / "Oct" / "Nov" / "Dec"
298
- end
299
-
300
- rule day
301
- (FWS? DIGIT DIGIT?) / obs_day
302
- end
303
-
304
- rule time
305
- time_of_day FWS zone
306
- end
307
-
308
- rule time_of_day
309
- hour ":" minute ( ":" second )?
310
- end
311
-
312
- rule hour
313
- DIGIT DIGIT / obs_hour
314
- end
315
-
316
- rule minute
317
- DIGIT DIGIT / obs_minute
318
- end
319
-
320
- rule second
321
- DIGIT DIGIT / obs_second
322
- end
323
-
324
- rule zone
325
- (( "+" / "-" ) DIGIT DIGIT DIGIT DIGIT) / obs_zone
326
- end
327
-
328
- rule return
329
- path CRLF
330
- end
331
-
332
- rule path
333
- ((CFWS)? "<" ((CFWS)? / addr_spec) ">" (CFWS)?) / obs_path
334
- end
335
-
336
- rule received
337
- name_val_list ";" date_time CRLF
338
- end
339
-
340
- rule name_val_list
341
- (CFWS)? (name_val_pair (CFWS name_val_pair)*)?
342
- end
343
-
344
- rule name_val_pair
345
- item_name CFWS item_value
346
- end
347
-
348
- rule item_name
349
- ALPHA (("-")? (ALPHA / DIGIT))*
350
- end
351
-
352
- rule item_value
353
- (angle_addr)+ / addr_spec / atom / domain / msg_id
354
- end
355
-
356
- rule message_ids
357
- first_msg_id:msg_id other_msg_ids:( CFWS msg_id_value:msg_id )*
358
- end
359
-
360
- rule msg_id
361
- (CFWS)? "<" msg_id_value ">" (CFWS)?
362
- end
363
-
364
- rule msg_id_value
365
- id_left "@" id_right
366
- end
367
-
368
- rule id_left
369
- message_id_text / no_fold_quote / obs_id_left
370
- end
371
-
372
- rule id_right
373
- msg_id_dot_atom_text / no_fold_literal / obs_id_right
374
- end
375
-
376
- rule msg_id_dot_atom_text
377
- (msg_id_domain_text "."?)+
378
- end
379
-
380
- rule msg_id_domain_text
381
- (DQUOTE (FWS? quoted_domain)+ FWS? DQUOTE) / msg_id_atext+
382
- end
383
-
384
- rule msg_id_atext
385
- ALPHA / DIGIT / # Any character except controls,
386
- "!" / "#" / # SP, and specials.
387
- "$" / "%" / # Used for atoms
388
- "&" / "'" /
389
- "*" / "+" /
390
- "-" / "/" /
391
- "=" / "?" /
392
- "^" / "_" /
393
- "`" / "{" /
394
- "|" / "}" /
395
- "~" / "@"
396
- end
397
-
398
- rule no_fold_quote
399
- DQUOTE (qtext / quoted_pair)+ DQUOTE
400
- end
401
-
402
- rule no_fold_literal
403
- "[" (dtext / quoted_pair)+ "]"
404
- end
405
-
406
-
407
- end
408
- end
@@ -1,3768 +0,0 @@
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