rack-mail_exception 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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