rack-mail_exception 0.0.1

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