actionmailer 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of actionmailer might be problematic. Click here for more details.
- data/CHANGELOG +3 -0
- data/MIT-LICENSE +21 -0
- data/README +102 -0
- data/install.rb +61 -0
- data/lib/action_mailer.rb +44 -0
- data/lib/action_mailer/base.rb +111 -0
- data/lib/action_mailer/mail_helper.rb +17 -0
- data/lib/action_mailer/vendor/text/format.rb +1447 -0
- data/lib/action_mailer/vendor/tmail.rb +4 -0
- data/lib/action_mailer/vendor/tmail/address.rb +223 -0
- data/lib/action_mailer/vendor/tmail/base64.rb +52 -0
- data/lib/action_mailer/vendor/tmail/config.rb +50 -0
- data/lib/action_mailer/vendor/tmail/encode.rb +447 -0
- data/lib/action_mailer/vendor/tmail/facade.rb +531 -0
- data/lib/action_mailer/vendor/tmail/header.rb +893 -0
- data/lib/action_mailer/vendor/tmail/info.rb +16 -0
- data/lib/action_mailer/vendor/tmail/loader.rb +1 -0
- data/lib/action_mailer/vendor/tmail/mail.rb +420 -0
- data/lib/action_mailer/vendor/tmail/mailbox.rb +414 -0
- data/lib/action_mailer/vendor/tmail/mbox.rb +1 -0
- data/lib/action_mailer/vendor/tmail/net.rb +261 -0
- data/lib/action_mailer/vendor/tmail/obsolete.rb +116 -0
- data/lib/action_mailer/vendor/tmail/parser.rb +1503 -0
- data/lib/action_mailer/vendor/tmail/port.rb +358 -0
- data/lib/action_mailer/vendor/tmail/scanner.rb +22 -0
- data/lib/action_mailer/vendor/tmail/scanner_r.rb +244 -0
- data/lib/action_mailer/vendor/tmail/stringio.rb +260 -0
- data/lib/action_mailer/vendor/tmail/tmail.rb +1 -0
- data/lib/action_mailer/vendor/tmail/utils.rb +215 -0
- data/rakefile +99 -0
- data/test/fixtures/templates/signed_up.rhtml +3 -0
- data/test/fixtures/test_mailer/signed_up.rhtml +3 -0
- data/test/mail_service_test.rb +53 -0
- metadata +86 -0
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            require 'tmail/mailbox'
         | 
| @@ -0,0 +1,261 @@ | |
| 1 | 
            +
            #
         | 
| 2 | 
            +
            # net.rb
         | 
| 3 | 
            +
            #
         | 
| 4 | 
            +
            # Copyright (c) 1998-2003 Minero Aoki <aamine@loveruby.net>
         | 
| 5 | 
            +
            #
         | 
| 6 | 
            +
            # This program is free software.
         | 
| 7 | 
            +
            # You can distribute/modify this program under the terms of
         | 
| 8 | 
            +
            # the GNU Lesser General Public License version 2 or later.
         | 
| 9 | 
            +
            #
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            require 'nkf'
         | 
| 12 | 
            +
             | 
| 13 | 
            +
             | 
| 14 | 
            +
            module TMail
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              class Mail
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                def send_to( smtp )
         | 
| 19 | 
            +
                  do_send_to(smtp) do
         | 
| 20 | 
            +
                    ready_to_send
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                def send_text_to( smtp )
         | 
| 25 | 
            +
                  do_send_to(smtp) do
         | 
| 26 | 
            +
                    ready_to_send
         | 
| 27 | 
            +
                    mime_encode
         | 
| 28 | 
            +
                  end
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                def do_send_to( smtp )
         | 
| 32 | 
            +
                  from = from_address or raise ArgumentError, 'no from address'
         | 
| 33 | 
            +
                  (dests = destinations).empty? and raise ArgumentError, 'no receipient'
         | 
| 34 | 
            +
                  yield
         | 
| 35 | 
            +
                  send_to_0 smtp, from, dests
         | 
| 36 | 
            +
                end
         | 
| 37 | 
            +
                private :do_send_to
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                def send_to_0( smtp, from, to )
         | 
| 40 | 
            +
                  smtp.ready(from, to) do |f|
         | 
| 41 | 
            +
                    encoded "\r\n", 'j', f, ''
         | 
| 42 | 
            +
                  end
         | 
| 43 | 
            +
                end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                def ready_to_send
         | 
| 46 | 
            +
                  delete_no_send_fields
         | 
| 47 | 
            +
                  add_message_id
         | 
| 48 | 
            +
                  add_date
         | 
| 49 | 
            +
                end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                NOSEND_FIELDS = %w(
         | 
| 52 | 
            +
                  received
         | 
| 53 | 
            +
                  bcc
         | 
| 54 | 
            +
                )
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                def delete_no_send_fields
         | 
| 57 | 
            +
                  NOSEND_FIELDS.each do |nm|
         | 
| 58 | 
            +
                    delete nm
         | 
| 59 | 
            +
                  end
         | 
| 60 | 
            +
                  delete_if {|n,v| v.empty? }
         | 
| 61 | 
            +
                end
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                def add_message_id( fqdn = nil )
         | 
| 64 | 
            +
                  self.message_id = ::TMail::new_msgid(fqdn)
         | 
| 65 | 
            +
                end
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                def add_date
         | 
| 68 | 
            +
                  self.date = Time.now
         | 
| 69 | 
            +
                end
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                def mime_encode
         | 
| 72 | 
            +
                  if parts.empty?
         | 
| 73 | 
            +
                    mime_encode_singlepart
         | 
| 74 | 
            +
                  else
         | 
| 75 | 
            +
                    mime_encode_multipart true
         | 
| 76 | 
            +
                  end
         | 
| 77 | 
            +
                end
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                def mime_encode_singlepart
         | 
| 80 | 
            +
                  self.mime_version = '1.0'
         | 
| 81 | 
            +
                  b = body
         | 
| 82 | 
            +
                  if NKF.guess(b) != NKF::BINARY
         | 
| 83 | 
            +
                    mime_encode_text b
         | 
| 84 | 
            +
                  else
         | 
| 85 | 
            +
                    mime_encode_binary b
         | 
| 86 | 
            +
                  end
         | 
| 87 | 
            +
                end
         | 
| 88 | 
            +
             | 
| 89 | 
            +
                def mime_encode_text( body )
         | 
| 90 | 
            +
                  self.body = NKF.nkf('-j -m0', body)
         | 
| 91 | 
            +
                  self.set_content_type 'text', 'plain', {'charset' => 'iso-2022-jp'}
         | 
| 92 | 
            +
                  self.encoding = '7bit'
         | 
| 93 | 
            +
                end
         | 
| 94 | 
            +
             | 
| 95 | 
            +
                def mime_encode_binary( body )
         | 
| 96 | 
            +
                  self.body = [body].pack('m')
         | 
| 97 | 
            +
                  self.set_content_type 'application', 'octet-stream'
         | 
| 98 | 
            +
                  self.encoding = 'Base64'
         | 
| 99 | 
            +
                end
         | 
| 100 | 
            +
             | 
| 101 | 
            +
                def mime_encode_multipart( top = true )
         | 
| 102 | 
            +
                  self.mime_version = '1.0' if top
         | 
| 103 | 
            +
                  self.set_content_type 'multipart', 'mixed'
         | 
| 104 | 
            +
                  e = encoding(nil)
         | 
| 105 | 
            +
                  if e and not /\A(?:7bit|8bit|binary)\z/i === e
         | 
| 106 | 
            +
                    raise ArgumentError,
         | 
| 107 | 
            +
                          'using C.T.Encoding with multipart mail is not permitted'
         | 
| 108 | 
            +
                  end
         | 
| 109 | 
            +
                end
         | 
| 110 | 
            +
             | 
| 111 | 
            +
                def create_empty_mail
         | 
| 112 | 
            +
                  self.class.new(StringPort.new(''), @config)
         | 
| 113 | 
            +
                end
         | 
| 114 | 
            +
             | 
| 115 | 
            +
                def create_reply
         | 
| 116 | 
            +
                  setup_reply create_empty_mail()
         | 
| 117 | 
            +
                end
         | 
| 118 | 
            +
             | 
| 119 | 
            +
                def setup_reply( m )
         | 
| 120 | 
            +
                  if tmp = reply_addresses(nil)
         | 
| 121 | 
            +
                    m.to_addrs = tmp
         | 
| 122 | 
            +
                  end
         | 
| 123 | 
            +
             | 
| 124 | 
            +
                  mid = message_id(nil)
         | 
| 125 | 
            +
                  tmp = references(nil) || []
         | 
| 126 | 
            +
                  tmp.push mid if mid
         | 
| 127 | 
            +
                  m.in_reply_to = [mid] if mid
         | 
| 128 | 
            +
                  m.references = tmp unless tmp.empty?
         | 
| 129 | 
            +
                  m.subject = 'Re: ' + subject('').sub(/\A(?:\s*re:)+/i, '')
         | 
| 130 | 
            +
             | 
| 131 | 
            +
                  m
         | 
| 132 | 
            +
                end
         | 
| 133 | 
            +
             | 
| 134 | 
            +
                def create_forward
         | 
| 135 | 
            +
                  setup_forward create_empty_mail()
         | 
| 136 | 
            +
                end
         | 
| 137 | 
            +
             | 
| 138 | 
            +
                def setup_forward( mail )
         | 
| 139 | 
            +
                  m = Mail.new(StringPort.new(''))
         | 
| 140 | 
            +
                  m.body = decoded
         | 
| 141 | 
            +
                  m.set_content_type 'message', 'rfc822'
         | 
| 142 | 
            +
                  m.encoding = encoding('7bit')
         | 
| 143 | 
            +
                  mail.parts.push m
         | 
| 144 | 
            +
                end
         | 
| 145 | 
            +
              
         | 
| 146 | 
            +
              end
         | 
| 147 | 
            +
             | 
| 148 | 
            +
             | 
| 149 | 
            +
              class DeleteFields
         | 
| 150 | 
            +
             | 
| 151 | 
            +
                NOSEND_FIELDS = %w(
         | 
| 152 | 
            +
                  received
         | 
| 153 | 
            +
                  bcc
         | 
| 154 | 
            +
                )
         | 
| 155 | 
            +
             | 
| 156 | 
            +
                def initialize( nosend = nil, delempty = true )
         | 
| 157 | 
            +
                  @no_send_fields = nosend || NOSEND_FIELDS.dup
         | 
| 158 | 
            +
                  @delete_empty_fields = delempty
         | 
| 159 | 
            +
                end
         | 
| 160 | 
            +
             | 
| 161 | 
            +
                attr :no_send_fields
         | 
| 162 | 
            +
                attr :delete_empty_fields, true
         | 
| 163 | 
            +
             | 
| 164 | 
            +
                def exec( mail )
         | 
| 165 | 
            +
                  @no_send_fields.each do |nm|
         | 
| 166 | 
            +
                    delete nm
         | 
| 167 | 
            +
                  end
         | 
| 168 | 
            +
                  delete_if {|n,v| v.empty? } if @delete_empty_fields
         | 
| 169 | 
            +
                end
         | 
| 170 | 
            +
              
         | 
| 171 | 
            +
              end
         | 
| 172 | 
            +
             | 
| 173 | 
            +
             | 
| 174 | 
            +
              class AddMessageId
         | 
| 175 | 
            +
             | 
| 176 | 
            +
                def initialize( fqdn = nil )
         | 
| 177 | 
            +
                  @fqdn = fqdn
         | 
| 178 | 
            +
                end
         | 
| 179 | 
            +
             | 
| 180 | 
            +
                attr :fqdn, true
         | 
| 181 | 
            +
             | 
| 182 | 
            +
                def exec( mail )
         | 
| 183 | 
            +
                  mail.message_id = ::TMail::new_msgid(@fqdn)
         | 
| 184 | 
            +
                end
         | 
| 185 | 
            +
              
         | 
| 186 | 
            +
              end
         | 
| 187 | 
            +
             | 
| 188 | 
            +
             | 
| 189 | 
            +
              class AddDate
         | 
| 190 | 
            +
             | 
| 191 | 
            +
                def exec( mail )
         | 
| 192 | 
            +
                  mail.date = Time.now
         | 
| 193 | 
            +
                end
         | 
| 194 | 
            +
              
         | 
| 195 | 
            +
              end
         | 
| 196 | 
            +
             | 
| 197 | 
            +
             | 
| 198 | 
            +
              class MimeEncodeAuto
         | 
| 199 | 
            +
             | 
| 200 | 
            +
                def initialize( s = nil, m = nil )
         | 
| 201 | 
            +
                  @singlepart_composer = s || MimeEncodeSingle.new
         | 
| 202 | 
            +
                  @multipart_composer  = m || MimeEncodeMulti.new
         | 
| 203 | 
            +
                end
         | 
| 204 | 
            +
             | 
| 205 | 
            +
                attr :singlepart_composer
         | 
| 206 | 
            +
                attr :multipart_composer
         | 
| 207 | 
            +
             | 
| 208 | 
            +
                def exec( mail )
         | 
| 209 | 
            +
                  if mail._builtin_multipart?
         | 
| 210 | 
            +
                  then @multipart_composer
         | 
| 211 | 
            +
                  else @singlepart_composer end.exec mail
         | 
| 212 | 
            +
                end
         | 
| 213 | 
            +
              
         | 
| 214 | 
            +
              end
         | 
| 215 | 
            +
             | 
| 216 | 
            +
              
         | 
| 217 | 
            +
              class MimeEncodeSingle
         | 
| 218 | 
            +
             | 
| 219 | 
            +
                def exec( mail )
         | 
| 220 | 
            +
                  mail.mime_version = '1.0'
         | 
| 221 | 
            +
                  b = mail.body
         | 
| 222 | 
            +
                  if NKF.guess(b) != NKF::BINARY
         | 
| 223 | 
            +
                    on_text b
         | 
| 224 | 
            +
                  else
         | 
| 225 | 
            +
                    on_binary b
         | 
| 226 | 
            +
                  end
         | 
| 227 | 
            +
                end
         | 
| 228 | 
            +
             | 
| 229 | 
            +
                def on_text( body )
         | 
| 230 | 
            +
                  mail.body = NKF.nkf('-j -m0', body)
         | 
| 231 | 
            +
                  mail.set_content_type 'text', 'plain', {'charset' => 'iso-2022-jp'}
         | 
| 232 | 
            +
                  mail.encoding = '7bit'
         | 
| 233 | 
            +
                end
         | 
| 234 | 
            +
             | 
| 235 | 
            +
                def on_binary( body )
         | 
| 236 | 
            +
                  mail.body = [body].pack('m')
         | 
| 237 | 
            +
                  mail.set_content_type 'application', 'octet-stream'
         | 
| 238 | 
            +
                  mail.encoding = 'Base64'
         | 
| 239 | 
            +
                end
         | 
| 240 | 
            +
              
         | 
| 241 | 
            +
              end
         | 
| 242 | 
            +
             | 
| 243 | 
            +
             | 
| 244 | 
            +
              class MimeEncodeMulti
         | 
| 245 | 
            +
             | 
| 246 | 
            +
                def exec( mail, top = true )
         | 
| 247 | 
            +
                  mail.mime_version = '1.0' if top
         | 
| 248 | 
            +
                  mail.set_content_type 'multipart', 'mixed'
         | 
| 249 | 
            +
                  e = encoding(nil)
         | 
| 250 | 
            +
                  if e and not /\A(?:7bit|8bit|binary)\z/i === e
         | 
| 251 | 
            +
                    raise ArgumentError,
         | 
| 252 | 
            +
                          'using C.T.Encoding with multipart mail is not permitted'
         | 
| 253 | 
            +
                  end
         | 
| 254 | 
            +
                  mail.parts.each do |m|
         | 
| 255 | 
            +
                    exec m, false if m._builtin_multipart?
         | 
| 256 | 
            +
                  end
         | 
| 257 | 
            +
                end
         | 
| 258 | 
            +
             | 
| 259 | 
            +
              end
         | 
| 260 | 
            +
             | 
| 261 | 
            +
            end   # module TMail
         | 
| @@ -0,0 +1,116 @@ | |
| 1 | 
            +
            #
         | 
| 2 | 
            +
            # obsolete.rb
         | 
| 3 | 
            +
            #
         | 
| 4 | 
            +
            # Copyright (c) 1998-2003 Minero Aoki <aamine@loveruby.net>
         | 
| 5 | 
            +
            #
         | 
| 6 | 
            +
            # This program is free software.
         | 
| 7 | 
            +
            # You can distribute/modify this program under the terms of
         | 
| 8 | 
            +
            # the GNU Lesser General Public License version 2 or later.
         | 
| 9 | 
            +
            #
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            module TMail
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              # mail.rb
         | 
| 14 | 
            +
              class Mail
         | 
| 15 | 
            +
                alias include? key?
         | 
| 16 | 
            +
                alias has_key? key?
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                def values
         | 
| 19 | 
            +
                  ret = []
         | 
| 20 | 
            +
                  each_field {|v| ret.push v }
         | 
| 21 | 
            +
                  ret
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                def value?( val )
         | 
| 25 | 
            +
                  HeaderField === val or return false
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                  [ @header[val.name.downcase] ].flatten.include? val
         | 
| 28 | 
            +
                end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                alias has_value? value?
         | 
| 31 | 
            +
              end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
             | 
| 34 | 
            +
              # facade.rb
         | 
| 35 | 
            +
              class Mail
         | 
| 36 | 
            +
                def from_addr( default = nil )
         | 
| 37 | 
            +
                  addr, = from_addrs(nil)
         | 
| 38 | 
            +
                  addr || default
         | 
| 39 | 
            +
                end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                def from_address( default = nil )
         | 
| 42 | 
            +
                  if a = from_addr(nil)
         | 
| 43 | 
            +
                    a.spec
         | 
| 44 | 
            +
                  else
         | 
| 45 | 
            +
                    default
         | 
| 46 | 
            +
                  end
         | 
| 47 | 
            +
                end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                alias from_address= from_addrs=
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                def from_phrase( default = nil )
         | 
| 52 | 
            +
                  if a = from_addr(nil)
         | 
| 53 | 
            +
                    a.phrase
         | 
| 54 | 
            +
                  else
         | 
| 55 | 
            +
                    default
         | 
| 56 | 
            +
                  end
         | 
| 57 | 
            +
                end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                alias msgid  message_id
         | 
| 60 | 
            +
                alias msgid= message_id=
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                alias each_dest each_destination
         | 
| 63 | 
            +
              end
         | 
| 64 | 
            +
             | 
| 65 | 
            +
             | 
| 66 | 
            +
              # address.rb
         | 
| 67 | 
            +
              class Address
         | 
| 68 | 
            +
                alias route routes
         | 
| 69 | 
            +
                alias addr spec
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                def spec=( str )
         | 
| 72 | 
            +
                  @local, @domain = str.split(/@/,2).map {|s| s.split(/\./) }
         | 
| 73 | 
            +
                end
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                alias addr= spec=
         | 
| 76 | 
            +
                alias address= spec=
         | 
| 77 | 
            +
              end
         | 
| 78 | 
            +
             | 
| 79 | 
            +
             | 
| 80 | 
            +
              # mbox.rb
         | 
| 81 | 
            +
              class MhMailbox
         | 
| 82 | 
            +
                alias new_mail new_port
         | 
| 83 | 
            +
                alias each_mail each_port
         | 
| 84 | 
            +
                alias each_newmail each_new_port
         | 
| 85 | 
            +
              end
         | 
| 86 | 
            +
              class UNIXMbox
         | 
| 87 | 
            +
                alias new_mail new_port
         | 
| 88 | 
            +
                alias each_mail each_port
         | 
| 89 | 
            +
                alias each_newmail each_new_port
         | 
| 90 | 
            +
              end
         | 
| 91 | 
            +
              class Maildir
         | 
| 92 | 
            +
                alias new_mail new_port
         | 
| 93 | 
            +
                alias each_mail each_port
         | 
| 94 | 
            +
                alias each_newmail each_new_port
         | 
| 95 | 
            +
              end
         | 
| 96 | 
            +
             | 
| 97 | 
            +
             | 
| 98 | 
            +
              # utils.rb
         | 
| 99 | 
            +
              extend TextUtils
         | 
| 100 | 
            +
             | 
| 101 | 
            +
              class << self
         | 
| 102 | 
            +
                alias msgid?    message_id?
         | 
| 103 | 
            +
                alias boundary  new_boundary
         | 
| 104 | 
            +
                alias msgid     new_message_id
         | 
| 105 | 
            +
                alias new_msgid new_message_id
         | 
| 106 | 
            +
              end
         | 
| 107 | 
            +
             | 
| 108 | 
            +
              def Mail.boundary
         | 
| 109 | 
            +
                ::TMail.new_boundary
         | 
| 110 | 
            +
              end
         | 
| 111 | 
            +
             | 
| 112 | 
            +
              def Mail.msgid
         | 
| 113 | 
            +
                ::TMail.new_message_id
         | 
| 114 | 
            +
              end
         | 
| 115 | 
            +
             | 
| 116 | 
            +
            end   # module TMail
         | 
| @@ -0,0 +1,1503 @@ | |
| 1 | 
            +
            #
         | 
| 2 | 
            +
            # DO NOT MODIFY!!!!
         | 
| 3 | 
            +
            # This file is automatically generated by racc 1.4.3
         | 
| 4 | 
            +
            # from racc grammer file "parser.y".
         | 
| 5 | 
            +
            #
         | 
| 6 | 
            +
            #
         | 
| 7 | 
            +
            # parser.rb: generated by racc (runtime embedded)
         | 
| 8 | 
            +
            #
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            ###### racc/parser.rb
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            unless $".index 'racc/parser.rb'
         | 
| 13 | 
            +
            $".push 'racc/parser.rb'
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            self.class.module_eval <<'..end /home/aamine/lib/ruby/racc/parser.rb modeval..idb76f2e220d', '/home/aamine/lib/ruby/racc/parser.rb', 1
         | 
| 16 | 
            +
            #
         | 
| 17 | 
            +
            # parser.rb
         | 
| 18 | 
            +
            #
         | 
| 19 | 
            +
            #   Copyright (c) 1999-2003 Minero Aoki <aamine@loveruby.net>
         | 
| 20 | 
            +
            #
         | 
| 21 | 
            +
            #   This program is free software.
         | 
| 22 | 
            +
            #   You can distribute/modify this program under the same terms of ruby.
         | 
| 23 | 
            +
            #
         | 
| 24 | 
            +
            #   As a special exception, when this code is copied by Racc
         | 
| 25 | 
            +
            #   into a Racc output file, you may use that output file
         | 
| 26 | 
            +
            #   without restriction.
         | 
| 27 | 
            +
            #
         | 
| 28 | 
            +
            #   $Id: parser.rb,v 1.1.1.1 2004/10/14 11:59:58 webster132 Exp $
         | 
| 29 | 
            +
            #
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            unless defined? NotImplementedError
         | 
| 32 | 
            +
              NotImplementedError = NotImplementError
         | 
| 33 | 
            +
            end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
             | 
| 36 | 
            +
            module Racc
         | 
| 37 | 
            +
              class ParseError < StandardError; end
         | 
| 38 | 
            +
            end
         | 
| 39 | 
            +
            unless defined?(::ParseError)
         | 
| 40 | 
            +
              ParseError = Racc::ParseError
         | 
| 41 | 
            +
            end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
             | 
| 44 | 
            +
            module Racc
         | 
| 45 | 
            +
             | 
| 46 | 
            +
              unless defined? Racc_No_Extentions
         | 
| 47 | 
            +
                Racc_No_Extentions = false
         | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
              class Parser
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                Racc_Runtime_Version = '1.4.3'
         | 
| 53 | 
            +
                Racc_Runtime_Revision = '$Revision: 1.1.1.1 $'.split(/\s+/)[1]
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                Racc_Runtime_Core_Version_R = '1.4.3'
         | 
| 56 | 
            +
                Racc_Runtime_Core_Revision_R = '$Revision: 1.1.1.1 $'.split(/\s+/)[1]
         | 
| 57 | 
            +
                begin
         | 
| 58 | 
            +
                  require 'racc/cparse'
         | 
| 59 | 
            +
                # Racc_Runtime_Core_Version_C  = (defined in extention)
         | 
| 60 | 
            +
                  Racc_Runtime_Core_Revision_C = Racc_Runtime_Core_Id_C.split(/\s+/)[2]
         | 
| 61 | 
            +
                  unless new.respond_to?(:_racc_do_parse_c, true)
         | 
| 62 | 
            +
                    raise LoadError, 'old cparse.so'
         | 
| 63 | 
            +
                  end
         | 
| 64 | 
            +
                  if Racc_No_Extentions
         | 
| 65 | 
            +
                    raise LoadError, 'selecting ruby version of racc runtime core'
         | 
| 66 | 
            +
                  end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                  Racc_Main_Parsing_Routine    = :_racc_do_parse_c
         | 
| 69 | 
            +
                  Racc_YY_Parse_Method         = :_racc_yyparse_c
         | 
| 70 | 
            +
                  Racc_Runtime_Core_Version    = Racc_Runtime_Core_Version_C
         | 
| 71 | 
            +
                  Racc_Runtime_Core_Revision   = Racc_Runtime_Core_Revision_C
         | 
| 72 | 
            +
                  Racc_Runtime_Type            = 'c'
         | 
| 73 | 
            +
                rescue LoadError
         | 
| 74 | 
            +
                  Racc_Main_Parsing_Routine    = :_racc_do_parse_rb
         | 
| 75 | 
            +
                  Racc_YY_Parse_Method         = :_racc_yyparse_rb
         | 
| 76 | 
            +
                  Racc_Runtime_Core_Version    = Racc_Runtime_Core_Version_R
         | 
| 77 | 
            +
                  Racc_Runtime_Core_Revision   = Racc_Runtime_Core_Revision_R
         | 
| 78 | 
            +
                  Racc_Runtime_Type            = 'ruby'
         | 
| 79 | 
            +
                end
         | 
| 80 | 
            +
             | 
| 81 | 
            +
                def self.racc_runtime_type
         | 
| 82 | 
            +
                  Racc_Runtime_Type
         | 
| 83 | 
            +
                end
         | 
| 84 | 
            +
             | 
| 85 | 
            +
                private
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                def _racc_setup
         | 
| 88 | 
            +
                  @yydebug = false unless self.class::Racc_debug_parser
         | 
| 89 | 
            +
                  @yydebug = false unless defined? @yydebug
         | 
| 90 | 
            +
                  if @yydebug
         | 
| 91 | 
            +
                    @racc_debug_out = $stderr unless defined? @racc_debug_out
         | 
| 92 | 
            +
                    @racc_debug_out ||= $stderr
         | 
| 93 | 
            +
                  end
         | 
| 94 | 
            +
                  arg = self.class::Racc_arg
         | 
| 95 | 
            +
                  arg[13] = true if arg.size < 14
         | 
| 96 | 
            +
                  arg
         | 
| 97 | 
            +
                end
         | 
| 98 | 
            +
             | 
| 99 | 
            +
                def _racc_init_sysvars
         | 
| 100 | 
            +
                  @racc_state  = [0]
         | 
| 101 | 
            +
                  @racc_tstack = []
         | 
| 102 | 
            +
                  @racc_vstack = []
         | 
| 103 | 
            +
             | 
| 104 | 
            +
                  @racc_t = nil
         | 
| 105 | 
            +
                  @racc_val = nil
         | 
| 106 | 
            +
             | 
| 107 | 
            +
                  @racc_read_next = true
         | 
| 108 | 
            +
             | 
| 109 | 
            +
                  @racc_user_yyerror = false
         | 
| 110 | 
            +
                  @racc_error_status = 0
         | 
| 111 | 
            +
                end
         | 
| 112 | 
            +
             | 
| 113 | 
            +
             | 
| 114 | 
            +
                ###
         | 
| 115 | 
            +
                ### do_parse
         | 
| 116 | 
            +
                ###
         | 
| 117 | 
            +
             | 
| 118 | 
            +
                def do_parse
         | 
| 119 | 
            +
                  __send__ Racc_Main_Parsing_Routine, _racc_setup(), false
         | 
| 120 | 
            +
                end
         | 
| 121 | 
            +
             | 
| 122 | 
            +
                def next_token
         | 
| 123 | 
            +
                  raise NotImplementedError, "#{self.class}\#next_token is not defined"
         | 
| 124 | 
            +
                end
         | 
| 125 | 
            +
             | 
| 126 | 
            +
                def _racc_do_parse_rb( arg, in_debug )
         | 
| 127 | 
            +
                  action_table, action_check, action_default, action_pointer,
         | 
| 128 | 
            +
                  goto_table,   goto_check,   goto_default,   goto_pointer,
         | 
| 129 | 
            +
                  nt_base,      reduce_table, token_table,    shift_n,
         | 
| 130 | 
            +
                  reduce_n,     use_result,   * = arg
         | 
| 131 | 
            +
             | 
| 132 | 
            +
                  _racc_init_sysvars
         | 
| 133 | 
            +
                  tok = act = i = nil
         | 
| 134 | 
            +
                  nerr = 0
         | 
| 135 | 
            +
             | 
| 136 | 
            +
                  catch(:racc_end_parse) {
         | 
| 137 | 
            +
                      while true
         | 
| 138 | 
            +
                        if i = action_pointer[@racc_state[-1]]
         | 
| 139 | 
            +
                          if @racc_read_next
         | 
| 140 | 
            +
                            if @racc_t != 0   # not EOF
         | 
| 141 | 
            +
                              tok, @racc_val = next_token()
         | 
| 142 | 
            +
                              unless tok      # EOF
         | 
| 143 | 
            +
                                @racc_t = 0
         | 
| 144 | 
            +
                              else
         | 
| 145 | 
            +
                                @racc_t = (token_table[tok] or 1)   # error token
         | 
| 146 | 
            +
                              end
         | 
| 147 | 
            +
                              racc_read_token(@racc_t, tok, @racc_val) if @yydebug
         | 
| 148 | 
            +
                              @racc_read_next = false
         | 
| 149 | 
            +
                            end
         | 
| 150 | 
            +
                          end
         | 
| 151 | 
            +
                          i += @racc_t
         | 
| 152 | 
            +
                          if  i >= 0 and
         | 
| 153 | 
            +
                              act = action_table[i] and
         | 
| 154 | 
            +
                              action_check[i] == @racc_state[-1]
         | 
| 155 | 
            +
                            ;
         | 
| 156 | 
            +
                          else
         | 
| 157 | 
            +
                            act = action_default[@racc_state[-1]]
         | 
| 158 | 
            +
                          end
         | 
| 159 | 
            +
                        else
         | 
| 160 | 
            +
                          act = action_default[@racc_state[-1]]
         | 
| 161 | 
            +
                        end
         | 
| 162 | 
            +
                        while act = _racc_evalact(act, arg)
         | 
| 163 | 
            +
                        end
         | 
| 164 | 
            +
                      end
         | 
| 165 | 
            +
                  }
         | 
| 166 | 
            +
                end
         | 
| 167 | 
            +
             | 
| 168 | 
            +
             | 
| 169 | 
            +
                ###
         | 
| 170 | 
            +
                ### yyparse
         | 
| 171 | 
            +
                ###
         | 
| 172 | 
            +
             | 
| 173 | 
            +
                def yyparse( recv, mid )
         | 
| 174 | 
            +
                  __send__ Racc_YY_Parse_Method, recv, mid, _racc_setup(), true
         | 
| 175 | 
            +
                end
         | 
| 176 | 
            +
             | 
| 177 | 
            +
                def _racc_yyparse_rb( recv, mid, arg, c_debug )
         | 
| 178 | 
            +
                  action_table, action_check, action_default, action_pointer,
         | 
| 179 | 
            +
                  goto_table,   goto_check,   goto_default,   goto_pointer,
         | 
| 180 | 
            +
                  nt_base,      reduce_table, token_table,    shift_n,
         | 
| 181 | 
            +
                  reduce_n,     use_result,   * = arg
         | 
| 182 | 
            +
             | 
| 183 | 
            +
                  _racc_init_sysvars
         | 
| 184 | 
            +
                  tok = nil
         | 
| 185 | 
            +
                  act = nil
         | 
| 186 | 
            +
                  i = nil
         | 
| 187 | 
            +
                  nerr = 0
         | 
| 188 | 
            +
             | 
| 189 | 
            +
             | 
| 190 | 
            +
                  catch(:racc_end_parse) {
         | 
| 191 | 
            +
                    until i = action_pointer[@racc_state[-1]]
         | 
| 192 | 
            +
                      while act = _racc_evalact(action_default[@racc_state[-1]], arg)
         | 
| 193 | 
            +
                      end
         | 
| 194 | 
            +
                    end
         | 
| 195 | 
            +
             | 
| 196 | 
            +
                    recv.__send__(mid) do |tok, val|
         | 
| 197 | 
            +
            # $stderr.puts "rd: tok=#{tok}, val=#{val}"
         | 
| 198 | 
            +
                      unless tok
         | 
| 199 | 
            +
                        @racc_t = 0
         | 
| 200 | 
            +
                      else
         | 
| 201 | 
            +
                        @racc_t = (token_table[tok] or 1)   # error token
         | 
| 202 | 
            +
                      end
         | 
| 203 | 
            +
                      @racc_val = val
         | 
| 204 | 
            +
                      @racc_read_next = false
         | 
| 205 | 
            +
             | 
| 206 | 
            +
                      i += @racc_t
         | 
| 207 | 
            +
                      if  i >= 0 and
         | 
| 208 | 
            +
                          act = action_table[i] and
         | 
| 209 | 
            +
                          action_check[i] == @racc_state[-1]
         | 
| 210 | 
            +
                        ;
         | 
| 211 | 
            +
            # $stderr.puts "01: act=#{act}"
         | 
| 212 | 
            +
                      else
         | 
| 213 | 
            +
                        act = action_default[@racc_state[-1]]
         | 
| 214 | 
            +
            # $stderr.puts "02: act=#{act}"
         | 
| 215 | 
            +
            # $stderr.puts "curstate=#{@racc_state[-1]}"
         | 
| 216 | 
            +
                      end
         | 
| 217 | 
            +
             | 
| 218 | 
            +
                      while act = _racc_evalact(act, arg)
         | 
| 219 | 
            +
                      end
         | 
| 220 | 
            +
             | 
| 221 | 
            +
                      while not (i = action_pointer[@racc_state[-1]]) or
         | 
| 222 | 
            +
                            not @racc_read_next or
         | 
| 223 | 
            +
                            @racc_t == 0   # $
         | 
| 224 | 
            +
                        if i and i += @racc_t and
         | 
| 225 | 
            +
                           i >= 0 and
         | 
| 226 | 
            +
                           act = action_table[i] and
         | 
| 227 | 
            +
                           action_check[i] == @racc_state[-1]
         | 
| 228 | 
            +
                          ;
         | 
| 229 | 
            +
            # $stderr.puts "03: act=#{act}"
         | 
| 230 | 
            +
                        else
         | 
| 231 | 
            +
            # $stderr.puts "04: act=#{act}"
         | 
| 232 | 
            +
                          act = action_default[@racc_state[-1]]
         | 
| 233 | 
            +
                        end
         | 
| 234 | 
            +
             | 
| 235 | 
            +
                        while act = _racc_evalact(act, arg)
         | 
| 236 | 
            +
                        end
         | 
| 237 | 
            +
                      end
         | 
| 238 | 
            +
                    end
         | 
| 239 | 
            +
                  }
         | 
| 240 | 
            +
                end
         | 
| 241 | 
            +
             | 
| 242 | 
            +
             | 
| 243 | 
            +
                ###
         | 
| 244 | 
            +
                ### common
         | 
| 245 | 
            +
                ###
         | 
| 246 | 
            +
             | 
| 247 | 
            +
                def _racc_evalact( act, arg )
         | 
| 248 | 
            +
            # $stderr.puts "ea: act=#{act}"
         | 
| 249 | 
            +
                  action_table, action_check, action_default, action_pointer,
         | 
| 250 | 
            +
                  goto_table,   goto_check,   goto_default,   goto_pointer,
         | 
| 251 | 
            +
                  nt_base,      reduce_table, token_table,    shift_n,
         | 
| 252 | 
            +
                  reduce_n,     use_result,   * = arg
         | 
| 253 | 
            +
            nerr = 0   # tmp
         | 
| 254 | 
            +
             | 
| 255 | 
            +
                  if act > 0 and act < shift_n
         | 
| 256 | 
            +
                    #
         | 
| 257 | 
            +
                    # shift
         | 
| 258 | 
            +
                    #
         | 
| 259 | 
            +
             | 
| 260 | 
            +
                    if @racc_error_status > 0
         | 
| 261 | 
            +
                      @racc_error_status -= 1 unless @racc_t == 1   # error token
         | 
| 262 | 
            +
                    end
         | 
| 263 | 
            +
             | 
| 264 | 
            +
                    @racc_vstack.push @racc_val
         | 
| 265 | 
            +
                    @racc_state.push act
         | 
| 266 | 
            +
                    @racc_read_next = true
         | 
| 267 | 
            +
             | 
| 268 | 
            +
                    if @yydebug
         | 
| 269 | 
            +
                      @racc_tstack.push @racc_t
         | 
| 270 | 
            +
                      racc_shift @racc_t, @racc_tstack, @racc_vstack
         | 
| 271 | 
            +
                    end
         | 
| 272 | 
            +
             | 
| 273 | 
            +
                  elsif act < 0 and act > -reduce_n
         | 
| 274 | 
            +
                    #
         | 
| 275 | 
            +
                    # reduce
         | 
| 276 | 
            +
                    #
         | 
| 277 | 
            +
             | 
| 278 | 
            +
                    code = catch(:racc_jump) {
         | 
| 279 | 
            +
                        @racc_state.push _racc_do_reduce(arg, act)
         | 
| 280 | 
            +
                        false
         | 
| 281 | 
            +
                    }
         | 
| 282 | 
            +
                    if code
         | 
| 283 | 
            +
                      case code
         | 
| 284 | 
            +
                      when 1 # yyerror
         | 
| 285 | 
            +
                        @racc_user_yyerror = true   # user_yyerror
         | 
| 286 | 
            +
                        return -reduce_n
         | 
| 287 | 
            +
                      when 2 # yyaccept
         | 
| 288 | 
            +
                        return shift_n
         | 
| 289 | 
            +
                      else
         | 
| 290 | 
            +
                        raise RuntimeError, '[Racc Bug] unknown jump code'
         | 
| 291 | 
            +
                      end
         | 
| 292 | 
            +
                    end
         | 
| 293 | 
            +
             | 
| 294 | 
            +
                  elsif act == shift_n
         | 
| 295 | 
            +
                    #
         | 
| 296 | 
            +
                    # accept
         | 
| 297 | 
            +
                    #
         | 
| 298 | 
            +
             | 
| 299 | 
            +
                    racc_accept if @yydebug
         | 
| 300 | 
            +
                    throw :racc_end_parse, @racc_vstack[0]
         | 
| 301 | 
            +
             | 
| 302 | 
            +
                  elsif act == -reduce_n
         | 
| 303 | 
            +
                    #
         | 
| 304 | 
            +
                    # error
         | 
| 305 | 
            +
                    #
         | 
| 306 | 
            +
             | 
| 307 | 
            +
                    case @racc_error_status
         | 
| 308 | 
            +
                    when 0
         | 
| 309 | 
            +
                      unless arg[21]    # user_yyerror
         | 
| 310 | 
            +
                        nerr += 1
         | 
| 311 | 
            +
                        on_error @racc_t, @racc_val, @racc_vstack
         | 
| 312 | 
            +
                      end
         | 
| 313 | 
            +
                    when 3
         | 
| 314 | 
            +
                      if @racc_t == 0   # is $
         | 
| 315 | 
            +
                        throw :racc_end_parse, nil
         | 
| 316 | 
            +
                      end
         | 
| 317 | 
            +
                      @racc_read_next = true
         | 
| 318 | 
            +
                    end
         | 
| 319 | 
            +
                    @racc_user_yyerror = false
         | 
| 320 | 
            +
                    @racc_error_status = 3
         | 
| 321 | 
            +
             | 
| 322 | 
            +
                    while true
         | 
| 323 | 
            +
                      if i = action_pointer[@racc_state[-1]]
         | 
| 324 | 
            +
                        i += 1   # error token
         | 
| 325 | 
            +
                        if  i >= 0 and
         | 
| 326 | 
            +
                            (act = action_table[i]) and
         | 
| 327 | 
            +
                            action_check[i] == @racc_state[-1]
         | 
| 328 | 
            +
                          break
         | 
| 329 | 
            +
                        end
         | 
| 330 | 
            +
                      end
         | 
| 331 | 
            +
             | 
| 332 | 
            +
                      throw :racc_end_parse, nil if @racc_state.size < 2
         | 
| 333 | 
            +
                      @racc_state.pop
         | 
| 334 | 
            +
                      @racc_vstack.pop
         | 
| 335 | 
            +
                      if @yydebug
         | 
| 336 | 
            +
                        @racc_tstack.pop
         | 
| 337 | 
            +
                        racc_e_pop @racc_state, @racc_tstack, @racc_vstack
         | 
| 338 | 
            +
                      end
         | 
| 339 | 
            +
                    end
         | 
| 340 | 
            +
             | 
| 341 | 
            +
                    return act
         | 
| 342 | 
            +
             | 
| 343 | 
            +
                  else
         | 
| 344 | 
            +
                    raise RuntimeError, "[Racc Bug] unknown action #{act.inspect}"
         | 
| 345 | 
            +
                  end
         | 
| 346 | 
            +
             | 
| 347 | 
            +
                  racc_next_state(@racc_state[-1], @racc_state) if @yydebug
         | 
| 348 | 
            +
             | 
| 349 | 
            +
                  nil
         | 
| 350 | 
            +
                end
         | 
| 351 | 
            +
             | 
| 352 | 
            +
                def _racc_do_reduce( arg, act )
         | 
| 353 | 
            +
                  action_table, action_check, action_default, action_pointer,
         | 
| 354 | 
            +
                  goto_table,   goto_check,   goto_default,   goto_pointer,
         | 
| 355 | 
            +
                  nt_base,      reduce_table, token_table,    shift_n,
         | 
| 356 | 
            +
                  reduce_n,     use_result,   * = arg
         | 
| 357 | 
            +
                  state = @racc_state
         | 
| 358 | 
            +
                  vstack = @racc_vstack
         | 
| 359 | 
            +
                  tstack = @racc_tstack
         | 
| 360 | 
            +
             | 
| 361 | 
            +
                  i = act * -3
         | 
| 362 | 
            +
                  len       = reduce_table[i]
         | 
| 363 | 
            +
                  reduce_to = reduce_table[i+1]
         | 
| 364 | 
            +
                  method_id = reduce_table[i+2]
         | 
| 365 | 
            +
                  void_array = []
         | 
| 366 | 
            +
             | 
| 367 | 
            +
                  tmp_t = tstack[-len, len] if @yydebug
         | 
| 368 | 
            +
                  tmp_v = vstack[-len, len]
         | 
| 369 | 
            +
                  tstack[-len, len] = void_array if @yydebug
         | 
| 370 | 
            +
                  vstack[-len, len] = void_array
         | 
| 371 | 
            +
                  state[-len, len]  = void_array
         | 
| 372 | 
            +
             | 
| 373 | 
            +
                  # tstack must be updated AFTER method call
         | 
| 374 | 
            +
                  if use_result
         | 
| 375 | 
            +
                    vstack.push __send__(method_id, tmp_v, vstack, tmp_v[0])
         | 
| 376 | 
            +
                  else
         | 
| 377 | 
            +
                    vstack.push __send__(method_id, tmp_v, vstack)
         | 
| 378 | 
            +
                  end
         | 
| 379 | 
            +
                  tstack.push reduce_to
         | 
| 380 | 
            +
             | 
| 381 | 
            +
                  racc_reduce(tmp_t, reduce_to, tstack, vstack) if @yydebug
         | 
| 382 | 
            +
             | 
| 383 | 
            +
                  k1 = reduce_to - nt_base
         | 
| 384 | 
            +
                  if i = goto_pointer[k1]
         | 
| 385 | 
            +
                    i += state[-1]
         | 
| 386 | 
            +
                    if i >= 0 and (curstate = goto_table[i]) and goto_check[i] == k1
         | 
| 387 | 
            +
                      return curstate
         | 
| 388 | 
            +
                    end
         | 
| 389 | 
            +
                  end
         | 
| 390 | 
            +
                  goto_default[k1]
         | 
| 391 | 
            +
                end
         | 
| 392 | 
            +
             | 
| 393 | 
            +
                def on_error( t, val, vstack )
         | 
| 394 | 
            +
                  raise ParseError, sprintf("\nparse error on value %s (%s)",
         | 
| 395 | 
            +
                                            val.inspect, token_to_str(t) || '?')
         | 
| 396 | 
            +
                end
         | 
| 397 | 
            +
             | 
| 398 | 
            +
                def yyerror
         | 
| 399 | 
            +
                  throw :racc_jump, 1
         | 
| 400 | 
            +
                end
         | 
| 401 | 
            +
             | 
| 402 | 
            +
                def yyaccept
         | 
| 403 | 
            +
                  throw :racc_jump, 2
         | 
| 404 | 
            +
                end
         | 
| 405 | 
            +
             | 
| 406 | 
            +
                def yyerrok
         | 
| 407 | 
            +
                  @racc_error_status = 0
         | 
| 408 | 
            +
                end
         | 
| 409 | 
            +
             | 
| 410 | 
            +
             | 
| 411 | 
            +
                # for debugging output
         | 
| 412 | 
            +
             | 
| 413 | 
            +
                def racc_read_token( t, tok, val )
         | 
| 414 | 
            +
                  @racc_debug_out.print 'read    '
         | 
| 415 | 
            +
                  @racc_debug_out.print tok.inspect, '(', racc_token2str(t), ') '
         | 
| 416 | 
            +
                  @racc_debug_out.puts val.inspect
         | 
| 417 | 
            +
                  @racc_debug_out.puts
         | 
| 418 | 
            +
                end
         | 
| 419 | 
            +
             | 
| 420 | 
            +
                def racc_shift( tok, tstack, vstack )
         | 
| 421 | 
            +
                  @racc_debug_out.puts "shift   #{racc_token2str tok}"
         | 
| 422 | 
            +
                  racc_print_stacks tstack, vstack
         | 
| 423 | 
            +
                  @racc_debug_out.puts
         | 
| 424 | 
            +
                end
         | 
| 425 | 
            +
             | 
| 426 | 
            +
                def racc_reduce( toks, sim, tstack, vstack )
         | 
| 427 | 
            +
                  out = @racc_debug_out
         | 
| 428 | 
            +
                  out.print 'reduce '
         | 
| 429 | 
            +
                  if toks.empty?
         | 
| 430 | 
            +
                    out.print ' <none>'
         | 
| 431 | 
            +
                  else
         | 
| 432 | 
            +
                    toks.each {|t| out.print ' ', racc_token2str(t) }
         | 
| 433 | 
            +
                  end
         | 
| 434 | 
            +
                  out.puts " --> #{racc_token2str(sim)}"
         | 
| 435 | 
            +
                      
         | 
| 436 | 
            +
                  racc_print_stacks tstack, vstack
         | 
| 437 | 
            +
                  @racc_debug_out.puts
         | 
| 438 | 
            +
                end
         | 
| 439 | 
            +
             | 
| 440 | 
            +
                def racc_accept
         | 
| 441 | 
            +
                  @racc_debug_out.puts 'accept'
         | 
| 442 | 
            +
                  @racc_debug_out.puts
         | 
| 443 | 
            +
                end
         | 
| 444 | 
            +
             | 
| 445 | 
            +
                def racc_e_pop( state, tstack, vstack )
         | 
| 446 | 
            +
                  @racc_debug_out.puts 'error recovering mode: pop token'
         | 
| 447 | 
            +
                  racc_print_states state
         | 
| 448 | 
            +
                  racc_print_stacks tstack, vstack
         | 
| 449 | 
            +
                  @racc_debug_out.puts
         | 
| 450 | 
            +
                end
         | 
| 451 | 
            +
             | 
| 452 | 
            +
                def racc_next_state( curstate, state )
         | 
| 453 | 
            +
                  @racc_debug_out.puts  "goto    #{curstate}"
         | 
| 454 | 
            +
                  racc_print_states state
         | 
| 455 | 
            +
                  @racc_debug_out.puts
         | 
| 456 | 
            +
                end
         | 
| 457 | 
            +
             | 
| 458 | 
            +
                def racc_print_stacks( t, v )
         | 
| 459 | 
            +
                  out = @racc_debug_out
         | 
| 460 | 
            +
                  out.print '        ['
         | 
| 461 | 
            +
                  t.each_index do |i|
         | 
| 462 | 
            +
                    out.print ' (', racc_token2str(t[i]), ' ', v[i].inspect, ')'
         | 
| 463 | 
            +
                  end
         | 
| 464 | 
            +
                  out.puts ' ]'
         | 
| 465 | 
            +
                end
         | 
| 466 | 
            +
             | 
| 467 | 
            +
                def racc_print_states( s )
         | 
| 468 | 
            +
                  out = @racc_debug_out
         | 
| 469 | 
            +
                  out.print '        ['
         | 
| 470 | 
            +
                  s.each {|st| out.print ' ', st }
         | 
| 471 | 
            +
                  out.puts ' ]'
         | 
| 472 | 
            +
                end
         | 
| 473 | 
            +
             | 
| 474 | 
            +
                def racc_token2str( tok )
         | 
| 475 | 
            +
                  self.class::Racc_token_to_s_table[tok] or
         | 
| 476 | 
            +
                      raise RuntimeError, "[Racc Bug] can't convert token #{tok} to string"
         | 
| 477 | 
            +
                end
         | 
| 478 | 
            +
             | 
| 479 | 
            +
                def token_to_str( t )
         | 
| 480 | 
            +
                  self.class::Racc_token_to_s_table[t]
         | 
| 481 | 
            +
                end
         | 
| 482 | 
            +
             | 
| 483 | 
            +
              end
         | 
| 484 | 
            +
             | 
| 485 | 
            +
            end
         | 
| 486 | 
            +
            ..end /home/aamine/lib/ruby/racc/parser.rb modeval..idb76f2e220d
         | 
| 487 | 
            +
            end   # end of racc/parser.rb
         | 
| 488 | 
            +
             | 
| 489 | 
            +
             | 
| 490 | 
            +
            #
         | 
| 491 | 
            +
            # parser.rb
         | 
| 492 | 
            +
            #
         | 
| 493 | 
            +
            # Copyright (c) 1998-2003 Minero Aoki <aamine@loveruby.net>
         | 
| 494 | 
            +
            #
         | 
| 495 | 
            +
            # This program is free software.
         | 
| 496 | 
            +
            # You can distribute/modify this program under the terms of
         | 
| 497 | 
            +
            # the GNU Lesser General Public License version 2 or later.
         | 
| 498 | 
            +
            #
         | 
| 499 | 
            +
             | 
| 500 | 
            +
            require 'tmail/scanner'
         | 
| 501 | 
            +
            require 'tmail/utils'
         | 
| 502 | 
            +
             | 
| 503 | 
            +
             | 
| 504 | 
            +
            module TMail
         | 
| 505 | 
            +
             | 
| 506 | 
            +
              class Parser < Racc::Parser
         | 
| 507 | 
            +
             | 
| 508 | 
            +
            module_eval <<'..end parser.y modeval..id43721faf1c', 'parser.y', 331
         | 
| 509 | 
            +
             | 
| 510 | 
            +
              include TextUtils
         | 
| 511 | 
            +
             | 
| 512 | 
            +
              def self.parse( ident, str, cmt = nil )
         | 
| 513 | 
            +
                new.parse(ident, str, cmt)
         | 
| 514 | 
            +
              end
         | 
| 515 | 
            +
             | 
| 516 | 
            +
              MAILP_DEBUG = false
         | 
| 517 | 
            +
             | 
| 518 | 
            +
              def initialize
         | 
| 519 | 
            +
                self.debug = MAILP_DEBUG
         | 
| 520 | 
            +
              end
         | 
| 521 | 
            +
             | 
| 522 | 
            +
              def debug=( flag )
         | 
| 523 | 
            +
                @yydebug = flag && Racc_debug_parser
         | 
| 524 | 
            +
                @scanner_debug = flag
         | 
| 525 | 
            +
              end
         | 
| 526 | 
            +
             | 
| 527 | 
            +
              def debug
         | 
| 528 | 
            +
                @yydebug
         | 
| 529 | 
            +
              end
         | 
| 530 | 
            +
             | 
| 531 | 
            +
              def parse( ident, str, comments = nil )
         | 
| 532 | 
            +
                @scanner = Scanner.new(str, ident, comments)
         | 
| 533 | 
            +
                @scanner.debug = @scanner_debug
         | 
| 534 | 
            +
                @first = [ident, ident]
         | 
| 535 | 
            +
                result = yyparse(self, :parse_in)
         | 
| 536 | 
            +
                comments.map! {|c| to_kcode(c) } if comments
         | 
| 537 | 
            +
                result
         | 
| 538 | 
            +
              end
         | 
| 539 | 
            +
             | 
| 540 | 
            +
              private
         | 
| 541 | 
            +
             | 
| 542 | 
            +
              def parse_in( &block )
         | 
| 543 | 
            +
                yield @first
         | 
| 544 | 
            +
                @scanner.scan(&block)
         | 
| 545 | 
            +
              end
         | 
| 546 | 
            +
              
         | 
| 547 | 
            +
              def on_error( t, val, vstack )
         | 
| 548 | 
            +
                raise SyntaxError, "parse error on token #{racc_token2str t}"
         | 
| 549 | 
            +
              end
         | 
| 550 | 
            +
             | 
| 551 | 
            +
            ..end parser.y modeval..id43721faf1c
         | 
| 552 | 
            +
             | 
| 553 | 
            +
            ##### racc 1.4.3 generates ###
         | 
| 554 | 
            +
             | 
| 555 | 
            +
            racc_reduce_table = [
         | 
| 556 | 
            +
             0, 0, :racc_error,
         | 
| 557 | 
            +
             2, 35, :_reduce_1,
         | 
| 558 | 
            +
             2, 35, :_reduce_2,
         | 
| 559 | 
            +
             2, 35, :_reduce_3,
         | 
| 560 | 
            +
             2, 35, :_reduce_4,
         | 
| 561 | 
            +
             2, 35, :_reduce_5,
         | 
| 562 | 
            +
             2, 35, :_reduce_6,
         | 
| 563 | 
            +
             2, 35, :_reduce_7,
         | 
| 564 | 
            +
             2, 35, :_reduce_8,
         | 
| 565 | 
            +
             2, 35, :_reduce_9,
         | 
| 566 | 
            +
             2, 35, :_reduce_10,
         | 
| 567 | 
            +
             2, 35, :_reduce_11,
         | 
| 568 | 
            +
             2, 35, :_reduce_12,
         | 
| 569 | 
            +
             6, 36, :_reduce_13,
         | 
| 570 | 
            +
             0, 48, :_reduce_none,
         | 
| 571 | 
            +
             2, 48, :_reduce_none,
         | 
| 572 | 
            +
             3, 49, :_reduce_16,
         | 
| 573 | 
            +
             5, 49, :_reduce_17,
         | 
| 574 | 
            +
             1, 50, :_reduce_18,
         | 
| 575 | 
            +
             7, 37, :_reduce_19,
         | 
| 576 | 
            +
             0, 51, :_reduce_none,
         | 
| 577 | 
            +
             2, 51, :_reduce_21,
         | 
| 578 | 
            +
             0, 52, :_reduce_none,
         | 
| 579 | 
            +
             2, 52, :_reduce_23,
         | 
| 580 | 
            +
             1, 58, :_reduce_24,
         | 
| 581 | 
            +
             3, 58, :_reduce_25,
         | 
| 582 | 
            +
             2, 58, :_reduce_26,
         | 
| 583 | 
            +
             0, 53, :_reduce_none,
         | 
| 584 | 
            +
             2, 53, :_reduce_28,
         | 
| 585 | 
            +
             0, 54, :_reduce_29,
         | 
| 586 | 
            +
             3, 54, :_reduce_30,
         | 
| 587 | 
            +
             0, 55, :_reduce_none,
         | 
| 588 | 
            +
             2, 55, :_reduce_32,
         | 
| 589 | 
            +
             2, 55, :_reduce_33,
         | 
| 590 | 
            +
             0, 56, :_reduce_none,
         | 
| 591 | 
            +
             2, 56, :_reduce_35,
         | 
| 592 | 
            +
             1, 61, :_reduce_36,
         | 
| 593 | 
            +
             1, 61, :_reduce_37,
         | 
| 594 | 
            +
             0, 57, :_reduce_none,
         | 
| 595 | 
            +
             2, 57, :_reduce_39,
         | 
| 596 | 
            +
             1, 38, :_reduce_none,
         | 
| 597 | 
            +
             1, 38, :_reduce_none,
         | 
| 598 | 
            +
             3, 38, :_reduce_none,
         | 
| 599 | 
            +
             1, 46, :_reduce_none,
         | 
| 600 | 
            +
             1, 46, :_reduce_none,
         | 
| 601 | 
            +
             1, 46, :_reduce_none,
         | 
| 602 | 
            +
             1, 39, :_reduce_none,
         | 
| 603 | 
            +
             2, 39, :_reduce_47,
         | 
| 604 | 
            +
             1, 64, :_reduce_48,
         | 
| 605 | 
            +
             3, 64, :_reduce_49,
         | 
| 606 | 
            +
             1, 68, :_reduce_none,
         | 
| 607 | 
            +
             1, 68, :_reduce_none,
         | 
| 608 | 
            +
             1, 69, :_reduce_52,
         | 
| 609 | 
            +
             3, 69, :_reduce_53,
         | 
| 610 | 
            +
             1, 47, :_reduce_none,
         | 
| 611 | 
            +
             1, 47, :_reduce_none,
         | 
| 612 | 
            +
             2, 47, :_reduce_56,
         | 
| 613 | 
            +
             2, 67, :_reduce_none,
         | 
| 614 | 
            +
             3, 65, :_reduce_58,
         | 
| 615 | 
            +
             2, 65, :_reduce_59,
         | 
| 616 | 
            +
             1, 70, :_reduce_60,
         | 
| 617 | 
            +
             2, 70, :_reduce_61,
         | 
| 618 | 
            +
             4, 62, :_reduce_62,
         | 
| 619 | 
            +
             3, 62, :_reduce_63,
         | 
| 620 | 
            +
             2, 72, :_reduce_none,
         | 
| 621 | 
            +
             2, 73, :_reduce_65,
         | 
| 622 | 
            +
             4, 73, :_reduce_66,
         | 
| 623 | 
            +
             3, 63, :_reduce_67,
         | 
| 624 | 
            +
             1, 63, :_reduce_68,
         | 
| 625 | 
            +
             1, 74, :_reduce_none,
         | 
| 626 | 
            +
             2, 74, :_reduce_70,
         | 
| 627 | 
            +
             1, 71, :_reduce_71,
         | 
| 628 | 
            +
             3, 71, :_reduce_72,
         | 
| 629 | 
            +
             1, 59, :_reduce_73,
         | 
| 630 | 
            +
             3, 59, :_reduce_74,
         | 
| 631 | 
            +
             1, 76, :_reduce_75,
         | 
| 632 | 
            +
             2, 76, :_reduce_76,
         | 
| 633 | 
            +
             1, 75, :_reduce_none,
         | 
| 634 | 
            +
             1, 75, :_reduce_none,
         | 
| 635 | 
            +
             1, 75, :_reduce_none,
         | 
| 636 | 
            +
             1, 77, :_reduce_none,
         | 
| 637 | 
            +
             1, 77, :_reduce_none,
         | 
| 638 | 
            +
             1, 77, :_reduce_none,
         | 
| 639 | 
            +
             1, 66, :_reduce_none,
         | 
| 640 | 
            +
             2, 66, :_reduce_none,
         | 
| 641 | 
            +
             3, 60, :_reduce_85,
         | 
| 642 | 
            +
             1, 40, :_reduce_86,
         | 
| 643 | 
            +
             3, 40, :_reduce_87,
         | 
| 644 | 
            +
             1, 79, :_reduce_none,
         | 
| 645 | 
            +
             2, 79, :_reduce_89,
         | 
| 646 | 
            +
             1, 41, :_reduce_90,
         | 
| 647 | 
            +
             2, 41, :_reduce_91,
         | 
| 648 | 
            +
             3, 42, :_reduce_92,
         | 
| 649 | 
            +
             5, 43, :_reduce_93,
         | 
| 650 | 
            +
             3, 43, :_reduce_94,
         | 
| 651 | 
            +
             0, 80, :_reduce_95,
         | 
| 652 | 
            +
             5, 80, :_reduce_96,
         | 
| 653 | 
            +
             1, 82, :_reduce_none,
         | 
| 654 | 
            +
             1, 82, :_reduce_none,
         | 
| 655 | 
            +
             1, 44, :_reduce_99,
         | 
| 656 | 
            +
             3, 45, :_reduce_100,
         | 
| 657 | 
            +
             0, 81, :_reduce_none,
         | 
| 658 | 
            +
             1, 81, :_reduce_none,
         | 
| 659 | 
            +
             1, 78, :_reduce_none,
         | 
| 660 | 
            +
             1, 78, :_reduce_none,
         | 
| 661 | 
            +
             1, 78, :_reduce_none,
         | 
| 662 | 
            +
             1, 78, :_reduce_none,
         | 
| 663 | 
            +
             1, 78, :_reduce_none,
         | 
| 664 | 
            +
             1, 78, :_reduce_none,
         | 
| 665 | 
            +
             1, 78, :_reduce_none ]
         | 
| 666 | 
            +
             | 
| 667 | 
            +
            racc_reduce_n = 110
         | 
| 668 | 
            +
             | 
| 669 | 
            +
            racc_shift_n = 168
         | 
| 670 | 
            +
             | 
| 671 | 
            +
            racc_action_table = [
         | 
| 672 | 
            +
               -70,   -69,    23,    25,   146,   147,    29,    31,   105,   106,
         | 
| 673 | 
            +
                16,    17,    20,    22,   136,    27,   -70,   -69,    32,   101,
         | 
| 674 | 
            +
               -70,   -69,   154,   100,   113,   115,   -70,   -69,   -70,   109,
         | 
| 675 | 
            +
                75,    23,    25,   101,   155,    29,    31,   142,   143,    16,
         | 
| 676 | 
            +
                17,    20,    22,   107,    27,    23,    25,    32,    98,    29,
         | 
| 677 | 
            +
                31,    96,    94,    16,    17,    20,    22,    78,    27,    23,
         | 
| 678 | 
            +
                25,    32,   112,    29,    31,    74,    91,    16,    17,    20,
         | 
| 679 | 
            +
                22,    88,   117,    92,    81,    32,    23,    25,    80,   123,
         | 
| 680 | 
            +
                29,    31,   100,   125,    16,    17,    20,    22,   126,    23,
         | 
| 681 | 
            +
                25,   109,    32,    29,    31,    91,   128,    16,    17,    20,
         | 
| 682 | 
            +
                22,   129,    27,    23,    25,    32,   101,    29,    31,   101,
         | 
| 683 | 
            +
               130,    16,    17,    20,    22,    79,    52,    23,    25,    32,
         | 
| 684 | 
            +
                78,    29,    31,   133,    78,    16,    17,    20,    22,    77,
         | 
| 685 | 
            +
                23,    25,    75,    32,    29,    31,    65,    62,    16,    17,
         | 
| 686 | 
            +
                20,    22,   139,    23,    25,   101,    32,    29,    31,    60,
         | 
| 687 | 
            +
               100,    16,    17,    20,    22,    44,    27,   101,   148,    32,
         | 
| 688 | 
            +
                23,    25,   120,   149,    29,    31,   152,   153,    16,    17,
         | 
| 689 | 
            +
                20,    22,    42,    27,   157,   159,    32,    23,    25,   120,
         | 
| 690 | 
            +
                40,    29,    31,    15,   164,    16,    17,    20,    22,    40,
         | 
| 691 | 
            +
                27,    23,    25,    32,    68,    29,    31,   166,   167,    16,
         | 
| 692 | 
            +
                17,    20,    22,   nil,    27,    23,    25,    32,   nil,    29,
         | 
| 693 | 
            +
                31,    74,   nil,    16,    17,    20,    22,   nil,    23,    25,
         | 
| 694 | 
            +
               nil,    32,    29,    31,   nil,   nil,    16,    17,    20,    22,
         | 
| 695 | 
            +
               nil,    23,    25,   nil,    32,    29,    31,   nil,   nil,    16,
         | 
| 696 | 
            +
                17,    20,    22,   nil,    23,    25,   nil,    32,    29,    31,
         | 
| 697 | 
            +
               nil,   nil,    16,    17,    20,    22,   nil,    23,    25,   nil,
         | 
| 698 | 
            +
                32,    29,    31,   nil,   nil,    16,    17,    20,    22,   nil,
         | 
| 699 | 
            +
                27,    23,    25,    32,   nil,    29,    31,   nil,   nil,    16,
         | 
| 700 | 
            +
                17,    20,    22,   nil,    23,    25,   nil,    32,    29,    31,
         | 
| 701 | 
            +
               nil,   nil,    16,    17,    20,    22,   nil,    23,    25,   nil,
         | 
| 702 | 
            +
                32,    29,    31,   nil,   nil,    16,    17,    20,    22,   nil,
         | 
| 703 | 
            +
                84,    25,   nil,    32,    29,    31,   nil,    87,    16,    17,
         | 
| 704 | 
            +
                20,    22,     4,     6,     7,     8,     9,    10,    11,    12,
         | 
| 705 | 
            +
                13,     1,     2,     3,    84,    25,   nil,   nil,    29,    31,
         | 
| 706 | 
            +
               nil,    87,    16,    17,    20,    22,    84,    25,   nil,   nil,
         | 
| 707 | 
            +
                29,    31,   nil,    87,    16,    17,    20,    22,    84,    25,
         | 
| 708 | 
            +
               nil,   nil,    29,    31,   nil,    87,    16,    17,    20,    22,
         | 
| 709 | 
            +
                84,    25,   nil,   nil,    29,    31,   nil,    87,    16,    17,
         | 
| 710 | 
            +
                20,    22,    84,    25,   nil,   nil,    29,    31,   nil,    87,
         | 
| 711 | 
            +
                16,    17,    20,    22,    84,    25,   nil,   nil,    29,    31,
         | 
| 712 | 
            +
               nil,    87,    16,    17,    20,    22 ]
         | 
| 713 | 
            +
             | 
| 714 | 
            +
            racc_action_check = [
         | 
| 715 | 
            +
                75,    28,    68,    68,   136,   136,    68,    68,    72,    72,
         | 
| 716 | 
            +
                68,    68,    68,    68,   126,    68,    75,    28,    68,    67,
         | 
| 717 | 
            +
                75,    28,   143,    66,    86,    86,    75,    28,    75,    75,
         | 
| 718 | 
            +
                28,     3,     3,    86,   143,     3,     3,   134,   134,     3,
         | 
| 719 | 
            +
                 3,     3,     3,    73,     3,   152,   152,     3,    62,   152,
         | 
| 720 | 
            +
               152,    60,    56,   152,   152,   152,   152,    51,   152,    52,
         | 
| 721 | 
            +
                52,   152,    80,    52,    52,    52,    50,    52,    52,    52,
         | 
| 722 | 
            +
                52,    45,    89,    52,    42,    52,    71,    71,    41,    96,
         | 
| 723 | 
            +
                71,    71,    97,    98,    71,    71,    71,    71,   100,     7,
         | 
| 724 | 
            +
                 7,   101,    71,     7,     7,   102,   104,     7,     7,     7,
         | 
| 725 | 
            +
                 7,   105,     7,     8,     8,     7,   108,     8,     8,   111,
         | 
| 726 | 
            +
               112,     8,     8,     8,     8,    40,     8,     9,     9,     8,
         | 
| 727 | 
            +
                36,     9,     9,   117,   121,     9,     9,     9,     9,    33,
         | 
| 728 | 
            +
                10,    10,    70,     9,    10,    10,    13,    12,    10,    10,
         | 
| 729 | 
            +
                10,    10,   130,     2,     2,   131,    10,     2,     2,    11,
         | 
| 730 | 
            +
               135,     2,     2,     2,     2,     6,     2,   138,   139,     2,
         | 
| 731 | 
            +
                90,    90,    90,   140,    90,    90,   141,   142,    90,    90,
         | 
| 732 | 
            +
                90,    90,     5,    90,   148,   151,    90,   127,   127,   127,
         | 
| 733 | 
            +
                 4,   127,   127,     1,   157,   127,   127,   127,   127,   159,
         | 
| 734 | 
            +
               127,    26,    26,   127,    26,    26,    26,   163,   164,    26,
         | 
| 735 | 
            +
                26,    26,    26,   nil,    26,    27,    27,    26,   nil,    27,
         | 
| 736 | 
            +
                27,    27,   nil,    27,    27,    27,    27,   nil,   155,   155,
         | 
| 737 | 
            +
               nil,    27,   155,   155,   nil,   nil,   155,   155,   155,   155,
         | 
| 738 | 
            +
               nil,   122,   122,   nil,   155,   122,   122,   nil,   nil,   122,
         | 
| 739 | 
            +
               122,   122,   122,   nil,    76,    76,   nil,   122,    76,    76,
         | 
| 740 | 
            +
               nil,   nil,    76,    76,    76,    76,   nil,    38,    38,   nil,
         | 
| 741 | 
            +
                76,    38,    38,   nil,   nil,    38,    38,    38,    38,   nil,
         | 
| 742 | 
            +
                38,    55,    55,    38,   nil,    55,    55,   nil,   nil,    55,
         | 
| 743 | 
            +
                55,    55,    55,   nil,    94,    94,   nil,    55,    94,    94,
         | 
| 744 | 
            +
               nil,   nil,    94,    94,    94,    94,   nil,    59,    59,   nil,
         | 
| 745 | 
            +
                94,    59,    59,   nil,   nil,    59,    59,    59,    59,   nil,
         | 
| 746 | 
            +
               114,   114,   nil,    59,   114,   114,   nil,   114,   114,   114,
         | 
| 747 | 
            +
               114,   114,     0,     0,     0,     0,     0,     0,     0,     0,
         | 
| 748 | 
            +
                 0,     0,     0,     0,    77,    77,   nil,   nil,    77,    77,
         | 
| 749 | 
            +
               nil,    77,    77,    77,    77,    77,    44,    44,   nil,   nil,
         | 
| 750 | 
            +
                44,    44,   nil,    44,    44,    44,    44,    44,   113,   113,
         | 
| 751 | 
            +
               nil,   nil,   113,   113,   nil,   113,   113,   113,   113,   113,
         | 
| 752 | 
            +
                88,    88,   nil,   nil,    88,    88,   nil,    88,    88,    88,
         | 
| 753 | 
            +
                88,    88,    74,    74,   nil,   nil,    74,    74,   nil,    74,
         | 
| 754 | 
            +
                74,    74,    74,    74,   129,   129,   nil,   nil,   129,   129,
         | 
| 755 | 
            +
               nil,   129,   129,   129,   129,   129 ]
         | 
| 756 | 
            +
             | 
| 757 | 
            +
            racc_action_pointer = [
         | 
| 758 | 
            +
               320,   152,   129,    17,   165,   172,   137,    75,    89,   103,
         | 
| 759 | 
            +
               116,   135,   106,   105,   nil,   nil,   nil,   nil,   nil,   nil,
         | 
| 760 | 
            +
               nil,   nil,   nil,   nil,   nil,   nil,   177,   191,     1,   nil,
         | 
| 761 | 
            +
               nil,   nil,   nil,   109,   nil,   nil,    94,   nil,   243,   nil,
         | 
| 762 | 
            +
                99,    64,    74,   nil,   332,    52,   nil,   nil,   nil,   nil,
         | 
| 763 | 
            +
                50,    31,    45,   nil,   nil,   257,    36,   nil,   nil,   283,
         | 
| 764 | 
            +
                22,   nil,    16,   nil,   nil,   nil,    -3,   -10,   -12,   nil,
         | 
| 765 | 
            +
               103,    62,    -8,    15,   368,     0,   230,   320,   nil,   nil,
         | 
| 766 | 
            +
                47,   nil,   nil,   nil,   nil,   nil,     4,   nil,   356,    50,
         | 
| 767 | 
            +
               146,   nil,   nil,   nil,   270,   nil,    65,    56,    52,   nil,
         | 
| 768 | 
            +
                57,    62,    79,   nil,    68,    81,   nil,   nil,    77,   nil,
         | 
| 769 | 
            +
               nil,    80,    96,   344,   296,   nil,   nil,   108,   nil,   nil,
         | 
| 770 | 
            +
               nil,    98,   217,   nil,   nil,   nil,   -19,   163,   nil,   380,
         | 
| 771 | 
            +
               128,   116,   nil,   nil,    14,   124,   -26,   nil,   128,   141,
         | 
| 772 | 
            +
               148,   141,   152,     7,   nil,   nil,   nil,   nil,   160,   nil,
         | 
| 773 | 
            +
               nil,   149,    31,   nil,   nil,   204,   nil,   167,   nil,   174,
         | 
| 774 | 
            +
               nil,   nil,   nil,   169,   184,   nil,   nil,   nil ]
         | 
| 775 | 
            +
             | 
| 776 | 
            +
            racc_action_default = [
         | 
| 777 | 
            +
              -110,  -110,  -110,  -110,   -14,  -110,   -20,  -110,  -110,  -110,
         | 
| 778 | 
            +
              -110,  -110,  -110,  -110,   -10,   -95,  -106,  -107,   -77,   -44,
         | 
| 779 | 
            +
              -108,   -11,  -109,   -79,   -43,  -103,  -110,  -110,   -60,  -104,
         | 
| 780 | 
            +
               -55,  -105,   -78,   -68,   -54,   -71,   -45,   -12,  -110,    -1,
         | 
| 781 | 
            +
              -110,  -110,  -110,    -2,  -110,   -22,   -51,   -48,   -50,    -3,
         | 
| 782 | 
            +
               -40,   -41,  -110,   -46,    -4,   -86,    -5,   -88,    -6,   -90,
         | 
| 783 | 
            +
              -110,    -7,   -95,    -8,    -9,   -99,  -101,   -61,   -59,   -56,
         | 
| 784 | 
            +
               -69,  -110,  -110,  -110,  -110,   -75,  -110,  -110,   -57,   -15,
         | 
| 785 | 
            +
              -110,   168,   -73,   -80,   -82,   -21,   -24,   -81,  -110,   -27,
         | 
| 786 | 
            +
              -110,   -83,   -47,   -89,  -110,   -91,  -110,  -101,  -110,  -100,
         | 
| 787 | 
            +
              -102,   -75,   -58,   -52,  -110,  -110,   -64,   -63,   -65,   -76,
         | 
| 788 | 
            +
               -72,   -67,  -110,  -110,  -110,   -26,   -23,  -110,   -29,   -49,
         | 
| 789 | 
            +
               -84,   -42,   -87,   -92,   -94,   -95,  -110,  -110,   -62,  -110,
         | 
| 790 | 
            +
              -110,   -25,   -74,   -28,   -31,  -101,  -110,   -53,   -66,  -110,
         | 
| 791 | 
            +
              -110,   -34,  -110,  -110,   -93,   -96,   -98,   -97,  -110,   -18,
         | 
| 792 | 
            +
               -13,   -38,  -110,   -30,   -33,  -110,   -32,   -16,   -19,   -14,
         | 
| 793 | 
            +
               -35,   -36,   -37,  -110,  -110,   -39,   -85,   -17 ]
         | 
| 794 | 
            +
             | 
| 795 | 
            +
            racc_goto_table = [
         | 
| 796 | 
            +
                39,    67,    70,    73,    24,    37,    69,    66,    36,    38,
         | 
| 797 | 
            +
                57,    59,    55,    67,   108,    83,    90,   111,    69,    99,
         | 
| 798 | 
            +
                85,    49,    53,    76,   158,   134,   141,    70,    73,   151,
         | 
| 799 | 
            +
               118,    89,    45,   156,   160,   150,   140,    21,    14,    19,
         | 
| 800 | 
            +
               119,   102,    64,    63,    61,    83,    70,   104,    83,    58,
         | 
| 801 | 
            +
               124,   132,    56,   131,    97,    54,    93,    43,     5,    83,
         | 
| 802 | 
            +
                95,   145,    76,   nil,   116,    76,   nil,   nil,   127,   138,
         | 
| 803 | 
            +
               103,   nil,   nil,   nil,    38,   nil,   nil,   110,   nil,   nil,
         | 
| 804 | 
            +
               nil,   nil,   nil,   nil,    83,    83,   nil,   nil,   144,   nil,
         | 
| 805 | 
            +
               nil,   nil,   nil,   nil,   nil,    57,   121,   122,   nil,   nil,
         | 
| 806 | 
            +
                83,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
         | 
| 807 | 
            +
               nil,   nil,   nil,   nil,   nil,   nil,   nil,   135,   nil,   nil,
         | 
| 808 | 
            +
               nil,   nil,   nil,    93,   nil,   nil,   nil,    70,   162,   137,
         | 
| 809 | 
            +
                70,   163,   161,    38,   nil,   nil,   nil,   nil,   nil,   nil,
         | 
| 810 | 
            +
               nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
         | 
| 811 | 
            +
               nil,   nil,   nil,   nil,   nil,   165 ]
         | 
| 812 | 
            +
             | 
| 813 | 
            +
            racc_goto_check = [
         | 
| 814 | 
            +
                 2,    37,    37,    29,    13,    13,    28,    46,    31,    36,
         | 
| 815 | 
            +
                41,    41,    45,    37,    25,    44,    32,    25,    28,    47,
         | 
| 816 | 
            +
                24,     4,     4,    42,    23,    20,    21,    37,    29,    22,
         | 
| 817 | 
            +
                19,    18,    17,    26,    27,    16,    15,    12,    11,    33,
         | 
| 818 | 
            +
                34,    35,    10,     9,     8,    44,    37,    29,    44,     7,
         | 
| 819 | 
            +
                47,    43,     6,    25,    46,     5,    41,     3,     1,    44,
         | 
| 820 | 
            +
                41,    48,    42,   nil,    24,    42,   nil,   nil,    32,    25,
         | 
| 821 | 
            +
                13,   nil,   nil,   nil,    36,   nil,   nil,    41,   nil,   nil,
         | 
| 822 | 
            +
               nil,   nil,   nil,   nil,    44,    44,   nil,   nil,    47,   nil,
         | 
| 823 | 
            +
               nil,   nil,   nil,   nil,   nil,    41,    31,    45,   nil,   nil,
         | 
| 824 | 
            +
                44,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
         | 
| 825 | 
            +
               nil,   nil,   nil,   nil,   nil,   nil,   nil,    46,   nil,   nil,
         | 
| 826 | 
            +
               nil,   nil,   nil,    41,   nil,   nil,   nil,    37,    29,    13,
         | 
| 827 | 
            +
                37,    29,    28,    36,   nil,   nil,   nil,   nil,   nil,   nil,
         | 
| 828 | 
            +
               nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
         | 
| 829 | 
            +
               nil,   nil,   nil,   nil,   nil,     2 ]
         | 
| 830 | 
            +
             | 
| 831 | 
            +
            racc_goto_pointer = [
         | 
| 832 | 
            +
               nil,    58,    -4,    51,    14,    47,    43,    39,    33,    31,
         | 
| 833 | 
            +
                29,    37,    35,     2,   nil,   -94,  -105,    26,   -14,   -59,
         | 
| 834 | 
            +
               -93,  -108,  -112,  -127,   -24,   -60,  -110,  -118,   -20,   -24,
         | 
| 835 | 
            +
               nil,     6,   -34,    37,   -50,   -27,     6,   -25,   nil,   nil,
         | 
| 836 | 
            +
               nil,     1,    -5,   -63,   -29,     3,    -8,   -47,   -75 ]
         | 
| 837 | 
            +
             | 
| 838 | 
            +
            racc_goto_default = [
         | 
| 839 | 
            +
               nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
         | 
| 840 | 
            +
               nil,   nil,   nil,    48,    41,   nil,   nil,   nil,   nil,   nil,
         | 
| 841 | 
            +
               nil,   nil,   nil,   nil,   nil,    86,   nil,   nil,    30,    34,
         | 
| 842 | 
            +
                50,    51,   nil,    46,    47,   nil,    26,    28,    71,    72,
         | 
| 843 | 
            +
                33,    35,   114,    82,    18,   nil,   nil,   nil,   nil ]
         | 
| 844 | 
            +
             | 
| 845 | 
            +
            racc_token_table = {
         | 
| 846 | 
            +
             false => 0,
         | 
| 847 | 
            +
             Object.new => 1,
         | 
| 848 | 
            +
             :DATETIME => 2,
         | 
| 849 | 
            +
             :RECEIVED => 3,
         | 
| 850 | 
            +
             :MADDRESS => 4,
         | 
| 851 | 
            +
             :RETPATH => 5,
         | 
| 852 | 
            +
             :KEYWORDS => 6,
         | 
| 853 | 
            +
             :ENCRYPTED => 7,
         | 
| 854 | 
            +
             :MIMEVERSION => 8,
         | 
| 855 | 
            +
             :CTYPE => 9,
         | 
| 856 | 
            +
             :CENCODING => 10,
         | 
| 857 | 
            +
             :CDISPOSITION => 11,
         | 
| 858 | 
            +
             :ADDRESS => 12,
         | 
| 859 | 
            +
             :MAILBOX => 13,
         | 
| 860 | 
            +
             :DIGIT => 14,
         | 
| 861 | 
            +
             :ATOM => 15,
         | 
| 862 | 
            +
             "," => 16,
         | 
| 863 | 
            +
             ":" => 17,
         | 
| 864 | 
            +
             :FROM => 18,
         | 
| 865 | 
            +
             :BY => 19,
         | 
| 866 | 
            +
             "@" => 20,
         | 
| 867 | 
            +
             :DOMLIT => 21,
         | 
| 868 | 
            +
             :VIA => 22,
         | 
| 869 | 
            +
             :WITH => 23,
         | 
| 870 | 
            +
             :ID => 24,
         | 
| 871 | 
            +
             :FOR => 25,
         | 
| 872 | 
            +
             ";" => 26,
         | 
| 873 | 
            +
             "<" => 27,
         | 
| 874 | 
            +
             ">" => 28,
         | 
| 875 | 
            +
             "." => 29,
         | 
| 876 | 
            +
             :QUOTED => 30,
         | 
| 877 | 
            +
             :TOKEN => 31,
         | 
| 878 | 
            +
             "/" => 32,
         | 
| 879 | 
            +
             "=" => 33 }
         | 
| 880 | 
            +
             | 
| 881 | 
            +
            racc_use_result_var = false
         | 
| 882 | 
            +
             | 
| 883 | 
            +
            racc_nt_base = 34
         | 
| 884 | 
            +
             | 
| 885 | 
            +
            Racc_arg = [
         | 
| 886 | 
            +
             racc_action_table,
         | 
| 887 | 
            +
             racc_action_check,
         | 
| 888 | 
            +
             racc_action_default,
         | 
| 889 | 
            +
             racc_action_pointer,
         | 
| 890 | 
            +
             racc_goto_table,
         | 
| 891 | 
            +
             racc_goto_check,
         | 
| 892 | 
            +
             racc_goto_default,
         | 
| 893 | 
            +
             racc_goto_pointer,
         | 
| 894 | 
            +
             racc_nt_base,
         | 
| 895 | 
            +
             racc_reduce_table,
         | 
| 896 | 
            +
             racc_token_table,
         | 
| 897 | 
            +
             racc_shift_n,
         | 
| 898 | 
            +
             racc_reduce_n,
         | 
| 899 | 
            +
             racc_use_result_var ]
         | 
| 900 | 
            +
             | 
| 901 | 
            +
            Racc_token_to_s_table = [
         | 
| 902 | 
            +
            '$end',
         | 
| 903 | 
            +
            'error',
         | 
| 904 | 
            +
            'DATETIME',
         | 
| 905 | 
            +
            'RECEIVED',
         | 
| 906 | 
            +
            'MADDRESS',
         | 
| 907 | 
            +
            'RETPATH',
         | 
| 908 | 
            +
            'KEYWORDS',
         | 
| 909 | 
            +
            'ENCRYPTED',
         | 
| 910 | 
            +
            'MIMEVERSION',
         | 
| 911 | 
            +
            'CTYPE',
         | 
| 912 | 
            +
            'CENCODING',
         | 
| 913 | 
            +
            'CDISPOSITION',
         | 
| 914 | 
            +
            'ADDRESS',
         | 
| 915 | 
            +
            'MAILBOX',
         | 
| 916 | 
            +
            'DIGIT',
         | 
| 917 | 
            +
            'ATOM',
         | 
| 918 | 
            +
            '","',
         | 
| 919 | 
            +
            '":"',
         | 
| 920 | 
            +
            'FROM',
         | 
| 921 | 
            +
            'BY',
         | 
| 922 | 
            +
            '"@"',
         | 
| 923 | 
            +
            'DOMLIT',
         | 
| 924 | 
            +
            'VIA',
         | 
| 925 | 
            +
            'WITH',
         | 
| 926 | 
            +
            'ID',
         | 
| 927 | 
            +
            'FOR',
         | 
| 928 | 
            +
            '";"',
         | 
| 929 | 
            +
            '"<"',
         | 
| 930 | 
            +
            '">"',
         | 
| 931 | 
            +
            '"."',
         | 
| 932 | 
            +
            'QUOTED',
         | 
| 933 | 
            +
            'TOKEN',
         | 
| 934 | 
            +
            '"/"',
         | 
| 935 | 
            +
            '"="',
         | 
| 936 | 
            +
            '$start',
         | 
| 937 | 
            +
            'content',
         | 
| 938 | 
            +
            'datetime',
         | 
| 939 | 
            +
            'received',
         | 
| 940 | 
            +
            'addrs_TOP',
         | 
| 941 | 
            +
            'retpath',
         | 
| 942 | 
            +
            'keys',
         | 
| 943 | 
            +
            'enc',
         | 
| 944 | 
            +
            'version',
         | 
| 945 | 
            +
            'ctype',
         | 
| 946 | 
            +
            'cencode',
         | 
| 947 | 
            +
            'cdisp',
         | 
| 948 | 
            +
            'addr_TOP',
         | 
| 949 | 
            +
            'mbox',
         | 
| 950 | 
            +
            'day',
         | 
| 951 | 
            +
            'hour',
         | 
| 952 | 
            +
            'zone',
         | 
| 953 | 
            +
            'from',
         | 
| 954 | 
            +
            'by',
         | 
| 955 | 
            +
            'via',
         | 
| 956 | 
            +
            'with',
         | 
| 957 | 
            +
            'id',
         | 
| 958 | 
            +
            'for',
         | 
| 959 | 
            +
            'received_datetime',
         | 
| 960 | 
            +
            'received_domain',
         | 
| 961 | 
            +
            'domain',
         | 
| 962 | 
            +
            'msgid',
         | 
| 963 | 
            +
            'received_addrspec',
         | 
| 964 | 
            +
            'routeaddr',
         | 
| 965 | 
            +
            'spec',
         | 
| 966 | 
            +
            'addrs',
         | 
| 967 | 
            +
            'group_bare',
         | 
| 968 | 
            +
            'commas',
         | 
| 969 | 
            +
            'group',
         | 
| 970 | 
            +
            'addr',
         | 
| 971 | 
            +
            'mboxes',
         | 
| 972 | 
            +
            'addr_phrase',
         | 
| 973 | 
            +
            'local_head',
         | 
| 974 | 
            +
            'routes',
         | 
| 975 | 
            +
            'at_domains',
         | 
| 976 | 
            +
            'local',
         | 
| 977 | 
            +
            'word',
         | 
| 978 | 
            +
            'dots',
         | 
| 979 | 
            +
            'domword',
         | 
| 980 | 
            +
            'atom',
         | 
| 981 | 
            +
            'phrase',
         | 
| 982 | 
            +
            'params',
         | 
| 983 | 
            +
            'opt_semicolon',
         | 
| 984 | 
            +
            'value']
         | 
| 985 | 
            +
             | 
| 986 | 
            +
            Racc_debug_parser = false
         | 
| 987 | 
            +
             | 
| 988 | 
            +
            ##### racc system variables end #####
         | 
| 989 | 
            +
             | 
| 990 | 
            +
             # reduce 0 omitted
         | 
| 991 | 
            +
             | 
| 992 | 
            +
            module_eval <<'.,.,', 'parser.y', 16
         | 
| 993 | 
            +
              def _reduce_1( val, _values)
         | 
| 994 | 
            +
             val[1]
         | 
| 995 | 
            +
              end
         | 
| 996 | 
            +
            .,.,
         | 
| 997 | 
            +
             | 
| 998 | 
            +
            module_eval <<'.,.,', 'parser.y', 17
         | 
| 999 | 
            +
              def _reduce_2( val, _values)
         | 
| 1000 | 
            +
             val[1]
         | 
| 1001 | 
            +
              end
         | 
| 1002 | 
            +
            .,.,
         | 
| 1003 | 
            +
             | 
| 1004 | 
            +
            module_eval <<'.,.,', 'parser.y', 18
         | 
| 1005 | 
            +
              def _reduce_3( val, _values)
         | 
| 1006 | 
            +
             val[1]
         | 
| 1007 | 
            +
              end
         | 
| 1008 | 
            +
            .,.,
         | 
| 1009 | 
            +
             | 
| 1010 | 
            +
            module_eval <<'.,.,', 'parser.y', 19
         | 
| 1011 | 
            +
              def _reduce_4( val, _values)
         | 
| 1012 | 
            +
             val[1]
         | 
| 1013 | 
            +
              end
         | 
| 1014 | 
            +
            .,.,
         | 
| 1015 | 
            +
             | 
| 1016 | 
            +
            module_eval <<'.,.,', 'parser.y', 20
         | 
| 1017 | 
            +
              def _reduce_5( val, _values)
         | 
| 1018 | 
            +
             val[1]
         | 
| 1019 | 
            +
              end
         | 
| 1020 | 
            +
            .,.,
         | 
| 1021 | 
            +
             | 
| 1022 | 
            +
            module_eval <<'.,.,', 'parser.y', 21
         | 
| 1023 | 
            +
              def _reduce_6( val, _values)
         | 
| 1024 | 
            +
             val[1]
         | 
| 1025 | 
            +
              end
         | 
| 1026 | 
            +
            .,.,
         | 
| 1027 | 
            +
             | 
| 1028 | 
            +
            module_eval <<'.,.,', 'parser.y', 22
         | 
| 1029 | 
            +
              def _reduce_7( val, _values)
         | 
| 1030 | 
            +
             val[1]
         | 
| 1031 | 
            +
              end
         | 
| 1032 | 
            +
            .,.,
         | 
| 1033 | 
            +
             | 
| 1034 | 
            +
            module_eval <<'.,.,', 'parser.y', 23
         | 
| 1035 | 
            +
              def _reduce_8( val, _values)
         | 
| 1036 | 
            +
             val[1]
         | 
| 1037 | 
            +
              end
         | 
| 1038 | 
            +
            .,.,
         | 
| 1039 | 
            +
             | 
| 1040 | 
            +
            module_eval <<'.,.,', 'parser.y', 24
         | 
| 1041 | 
            +
              def _reduce_9( val, _values)
         | 
| 1042 | 
            +
             val[1]
         | 
| 1043 | 
            +
              end
         | 
| 1044 | 
            +
            .,.,
         | 
| 1045 | 
            +
             | 
| 1046 | 
            +
            module_eval <<'.,.,', 'parser.y', 25
         | 
| 1047 | 
            +
              def _reduce_10( val, _values)
         | 
| 1048 | 
            +
             val[1]
         | 
| 1049 | 
            +
              end
         | 
| 1050 | 
            +
            .,.,
         | 
| 1051 | 
            +
             | 
| 1052 | 
            +
            module_eval <<'.,.,', 'parser.y', 26
         | 
| 1053 | 
            +
              def _reduce_11( val, _values)
         | 
| 1054 | 
            +
             val[1]
         | 
| 1055 | 
            +
              end
         | 
| 1056 | 
            +
            .,.,
         | 
| 1057 | 
            +
             | 
| 1058 | 
            +
            module_eval <<'.,.,', 'parser.y', 27
         | 
| 1059 | 
            +
              def _reduce_12( val, _values)
         | 
| 1060 | 
            +
             val[1]
         | 
| 1061 | 
            +
              end
         | 
| 1062 | 
            +
            .,.,
         | 
| 1063 | 
            +
             | 
| 1064 | 
            +
            module_eval <<'.,.,', 'parser.y', 33
         | 
| 1065 | 
            +
              def _reduce_13( val, _values)
         | 
| 1066 | 
            +
                              t = Time.gm(val[3].to_i, val[2], val[1].to_i, 0, 0, 0)
         | 
| 1067 | 
            +
                              (t + val[4] - val[5]).localtime
         | 
| 1068 | 
            +
              end
         | 
| 1069 | 
            +
            .,.,
         | 
| 1070 | 
            +
             | 
| 1071 | 
            +
             # reduce 14 omitted
         | 
| 1072 | 
            +
             | 
| 1073 | 
            +
             # reduce 15 omitted
         | 
| 1074 | 
            +
             | 
| 1075 | 
            +
            module_eval <<'.,.,', 'parser.y', 42
         | 
| 1076 | 
            +
              def _reduce_16( val, _values)
         | 
| 1077 | 
            +
                              (val[0].to_i * 60 * 60) +
         | 
| 1078 | 
            +
                              (val[2].to_i * 60)
         | 
| 1079 | 
            +
              end
         | 
| 1080 | 
            +
            .,.,
         | 
| 1081 | 
            +
             | 
| 1082 | 
            +
            module_eval <<'.,.,', 'parser.y', 47
         | 
| 1083 | 
            +
              def _reduce_17( val, _values)
         | 
| 1084 | 
            +
                              (val[0].to_i * 60 * 60) +
         | 
| 1085 | 
            +
                              (val[2].to_i * 60) +
         | 
| 1086 | 
            +
                              (val[4].to_i)
         | 
| 1087 | 
            +
              end
         | 
| 1088 | 
            +
            .,.,
         | 
| 1089 | 
            +
             | 
| 1090 | 
            +
            module_eval <<'.,.,', 'parser.y', 54
         | 
| 1091 | 
            +
              def _reduce_18( val, _values)
         | 
| 1092 | 
            +
                              timezone_string_to_unixtime(val[0])
         | 
| 1093 | 
            +
              end
         | 
| 1094 | 
            +
            .,.,
         | 
| 1095 | 
            +
             | 
| 1096 | 
            +
            module_eval <<'.,.,', 'parser.y', 59
         | 
| 1097 | 
            +
              def _reduce_19( val, _values)
         | 
| 1098 | 
            +
                              val
         | 
| 1099 | 
            +
              end
         | 
| 1100 | 
            +
            .,.,
         | 
| 1101 | 
            +
             | 
| 1102 | 
            +
             # reduce 20 omitted
         | 
| 1103 | 
            +
             | 
| 1104 | 
            +
            module_eval <<'.,.,', 'parser.y', 65
         | 
| 1105 | 
            +
              def _reduce_21( val, _values)
         | 
| 1106 | 
            +
                              val[1]
         | 
| 1107 | 
            +
              end
         | 
| 1108 | 
            +
            .,.,
         | 
| 1109 | 
            +
             | 
| 1110 | 
            +
             # reduce 22 omitted
         | 
| 1111 | 
            +
             | 
| 1112 | 
            +
            module_eval <<'.,.,', 'parser.y', 71
         | 
| 1113 | 
            +
              def _reduce_23( val, _values)
         | 
| 1114 | 
            +
                              val[1]
         | 
| 1115 | 
            +
              end
         | 
| 1116 | 
            +
            .,.,
         | 
| 1117 | 
            +
             | 
| 1118 | 
            +
            module_eval <<'.,.,', 'parser.y', 77
         | 
| 1119 | 
            +
              def _reduce_24( val, _values)
         | 
| 1120 | 
            +
                              join_domain(val[0])
         | 
| 1121 | 
            +
              end
         | 
| 1122 | 
            +
            .,.,
         | 
| 1123 | 
            +
             | 
| 1124 | 
            +
            module_eval <<'.,.,', 'parser.y', 81
         | 
| 1125 | 
            +
              def _reduce_25( val, _values)
         | 
| 1126 | 
            +
                              join_domain(val[2])
         | 
| 1127 | 
            +
              end
         | 
| 1128 | 
            +
            .,.,
         | 
| 1129 | 
            +
             | 
| 1130 | 
            +
            module_eval <<'.,.,', 'parser.y', 85
         | 
| 1131 | 
            +
              def _reduce_26( val, _values)
         | 
| 1132 | 
            +
                              join_domain(val[0])
         | 
| 1133 | 
            +
              end
         | 
| 1134 | 
            +
            .,.,
         | 
| 1135 | 
            +
             | 
| 1136 | 
            +
             # reduce 27 omitted
         | 
| 1137 | 
            +
             | 
| 1138 | 
            +
            module_eval <<'.,.,', 'parser.y', 91
         | 
| 1139 | 
            +
              def _reduce_28( val, _values)
         | 
| 1140 | 
            +
                              val[1]
         | 
| 1141 | 
            +
              end
         | 
| 1142 | 
            +
            .,.,
         | 
| 1143 | 
            +
             | 
| 1144 | 
            +
            module_eval <<'.,.,', 'parser.y', 96
         | 
| 1145 | 
            +
              def _reduce_29( val, _values)
         | 
| 1146 | 
            +
                              []
         | 
| 1147 | 
            +
              end
         | 
| 1148 | 
            +
            .,.,
         | 
| 1149 | 
            +
             | 
| 1150 | 
            +
            module_eval <<'.,.,', 'parser.y', 100
         | 
| 1151 | 
            +
              def _reduce_30( val, _values)
         | 
| 1152 | 
            +
                              val[0].push val[2]
         | 
| 1153 | 
            +
                              val[0]
         | 
| 1154 | 
            +
              end
         | 
| 1155 | 
            +
            .,.,
         | 
| 1156 | 
            +
             | 
| 1157 | 
            +
             # reduce 31 omitted
         | 
| 1158 | 
            +
             | 
| 1159 | 
            +
            module_eval <<'.,.,', 'parser.y', 107
         | 
| 1160 | 
            +
              def _reduce_32( val, _values)
         | 
| 1161 | 
            +
                              val[1]
         | 
| 1162 | 
            +
              end
         | 
| 1163 | 
            +
            .,.,
         | 
| 1164 | 
            +
             | 
| 1165 | 
            +
            module_eval <<'.,.,', 'parser.y', 111
         | 
| 1166 | 
            +
              def _reduce_33( val, _values)
         | 
| 1167 | 
            +
                              val[1]
         | 
| 1168 | 
            +
              end
         | 
| 1169 | 
            +
            .,.,
         | 
| 1170 | 
            +
             | 
| 1171 | 
            +
             # reduce 34 omitted
         | 
| 1172 | 
            +
             | 
| 1173 | 
            +
            module_eval <<'.,.,', 'parser.y', 117
         | 
| 1174 | 
            +
              def _reduce_35( val, _values)
         | 
| 1175 | 
            +
                              val[1]
         | 
| 1176 | 
            +
              end
         | 
| 1177 | 
            +
            .,.,
         | 
| 1178 | 
            +
             | 
| 1179 | 
            +
            module_eval <<'.,.,', 'parser.y', 123
         | 
| 1180 | 
            +
              def _reduce_36( val, _values)
         | 
| 1181 | 
            +
                              val[0].spec
         | 
| 1182 | 
            +
              end
         | 
| 1183 | 
            +
            .,.,
         | 
| 1184 | 
            +
             | 
| 1185 | 
            +
            module_eval <<'.,.,', 'parser.y', 127
         | 
| 1186 | 
            +
              def _reduce_37( val, _values)
         | 
| 1187 | 
            +
                              val[0].spec
         | 
| 1188 | 
            +
              end
         | 
| 1189 | 
            +
            .,.,
         | 
| 1190 | 
            +
             | 
| 1191 | 
            +
             # reduce 38 omitted
         | 
| 1192 | 
            +
             | 
| 1193 | 
            +
            module_eval <<'.,.,', 'parser.y', 134
         | 
| 1194 | 
            +
              def _reduce_39( val, _values)
         | 
| 1195 | 
            +
                              val[1]
         | 
| 1196 | 
            +
              end
         | 
| 1197 | 
            +
            .,.,
         | 
| 1198 | 
            +
             | 
| 1199 | 
            +
             # reduce 40 omitted
         | 
| 1200 | 
            +
             | 
| 1201 | 
            +
             # reduce 41 omitted
         | 
| 1202 | 
            +
             | 
| 1203 | 
            +
             # reduce 42 omitted
         | 
| 1204 | 
            +
             | 
| 1205 | 
            +
             # reduce 43 omitted
         | 
| 1206 | 
            +
             | 
| 1207 | 
            +
             # reduce 44 omitted
         | 
| 1208 | 
            +
             | 
| 1209 | 
            +
             # reduce 45 omitted
         | 
| 1210 | 
            +
             | 
| 1211 | 
            +
             # reduce 46 omitted
         | 
| 1212 | 
            +
             | 
| 1213 | 
            +
            module_eval <<'.,.,', 'parser.y', 146
         | 
| 1214 | 
            +
              def _reduce_47( val, _values)
         | 
| 1215 | 
            +
             [ Address.new(nil, nil) ]
         | 
| 1216 | 
            +
              end
         | 
| 1217 | 
            +
            .,.,
         | 
| 1218 | 
            +
             | 
| 1219 | 
            +
            module_eval <<'.,.,', 'parser.y', 148
         | 
| 1220 | 
            +
              def _reduce_48( val, _values)
         | 
| 1221 | 
            +
             val
         | 
| 1222 | 
            +
              end
         | 
| 1223 | 
            +
            .,.,
         | 
| 1224 | 
            +
             | 
| 1225 | 
            +
            module_eval <<'.,.,', 'parser.y', 149
         | 
| 1226 | 
            +
              def _reduce_49( val, _values)
         | 
| 1227 | 
            +
             val[0].push val[2]; val[0]
         | 
| 1228 | 
            +
              end
         | 
| 1229 | 
            +
            .,.,
         | 
| 1230 | 
            +
             | 
| 1231 | 
            +
             # reduce 50 omitted
         | 
| 1232 | 
            +
             | 
| 1233 | 
            +
             # reduce 51 omitted
         | 
| 1234 | 
            +
             | 
| 1235 | 
            +
            module_eval <<'.,.,', 'parser.y', 156
         | 
| 1236 | 
            +
              def _reduce_52( val, _values)
         | 
| 1237 | 
            +
                              val
         | 
| 1238 | 
            +
              end
         | 
| 1239 | 
            +
            .,.,
         | 
| 1240 | 
            +
             | 
| 1241 | 
            +
            module_eval <<'.,.,', 'parser.y', 160
         | 
| 1242 | 
            +
              def _reduce_53( val, _values)
         | 
| 1243 | 
            +
                              val[0].push val[2]
         | 
| 1244 | 
            +
                              val[0]
         | 
| 1245 | 
            +
              end
         | 
| 1246 | 
            +
            .,.,
         | 
| 1247 | 
            +
             | 
| 1248 | 
            +
             # reduce 54 omitted
         | 
| 1249 | 
            +
             | 
| 1250 | 
            +
             # reduce 55 omitted
         | 
| 1251 | 
            +
             | 
| 1252 | 
            +
            module_eval <<'.,.,', 'parser.y', 168
         | 
| 1253 | 
            +
              def _reduce_56( val, _values)
         | 
| 1254 | 
            +
                              val[1].phrase = Decoder.decode(val[0])
         | 
| 1255 | 
            +
                              val[1]
         | 
| 1256 | 
            +
              end
         | 
| 1257 | 
            +
            .,.,
         | 
| 1258 | 
            +
             | 
| 1259 | 
            +
             # reduce 57 omitted
         | 
| 1260 | 
            +
             | 
| 1261 | 
            +
            module_eval <<'.,.,', 'parser.y', 176
         | 
| 1262 | 
            +
              def _reduce_58( val, _values)
         | 
| 1263 | 
            +
                              AddressGroup.new(val[0], val[2])
         | 
| 1264 | 
            +
              end
         | 
| 1265 | 
            +
            .,.,
         | 
| 1266 | 
            +
             | 
| 1267 | 
            +
            module_eval <<'.,.,', 'parser.y', 178
         | 
| 1268 | 
            +
              def _reduce_59( val, _values)
         | 
| 1269 | 
            +
             AddressGroup.new(val[0], [])
         | 
| 1270 | 
            +
              end
         | 
| 1271 | 
            +
            .,.,
         | 
| 1272 | 
            +
             | 
| 1273 | 
            +
            module_eval <<'.,.,', 'parser.y', 181
         | 
| 1274 | 
            +
              def _reduce_60( val, _values)
         | 
| 1275 | 
            +
             val[0].join('.')
         | 
| 1276 | 
            +
              end
         | 
| 1277 | 
            +
            .,.,
         | 
| 1278 | 
            +
             | 
| 1279 | 
            +
            module_eval <<'.,.,', 'parser.y', 182
         | 
| 1280 | 
            +
              def _reduce_61( val, _values)
         | 
| 1281 | 
            +
             val[0] << ' ' << val[1].join('.')
         | 
| 1282 | 
            +
              end
         | 
| 1283 | 
            +
            .,.,
         | 
| 1284 | 
            +
             | 
| 1285 | 
            +
            module_eval <<'.,.,', 'parser.y', 186
         | 
| 1286 | 
            +
              def _reduce_62( val, _values)
         | 
| 1287 | 
            +
                              val[2].routes.replace val[1]
         | 
| 1288 | 
            +
                              val[2]
         | 
| 1289 | 
            +
              end
         | 
| 1290 | 
            +
            .,.,
         | 
| 1291 | 
            +
             | 
| 1292 | 
            +
            module_eval <<'.,.,', 'parser.y', 191
         | 
| 1293 | 
            +
              def _reduce_63( val, _values)
         | 
| 1294 | 
            +
                              val[1]
         | 
| 1295 | 
            +
              end
         | 
| 1296 | 
            +
            .,.,
         | 
| 1297 | 
            +
             | 
| 1298 | 
            +
             # reduce 64 omitted
         | 
| 1299 | 
            +
             | 
| 1300 | 
            +
            module_eval <<'.,.,', 'parser.y', 196
         | 
| 1301 | 
            +
              def _reduce_65( val, _values)
         | 
| 1302 | 
            +
             [ val[1].join('.') ]
         | 
| 1303 | 
            +
              end
         | 
| 1304 | 
            +
            .,.,
         | 
| 1305 | 
            +
             | 
| 1306 | 
            +
            module_eval <<'.,.,', 'parser.y', 197
         | 
| 1307 | 
            +
              def _reduce_66( val, _values)
         | 
| 1308 | 
            +
             val[0].push val[3].join('.'); val[0]
         | 
| 1309 | 
            +
              end
         | 
| 1310 | 
            +
            .,.,
         | 
| 1311 | 
            +
             | 
| 1312 | 
            +
            module_eval <<'.,.,', 'parser.y', 199
         | 
| 1313 | 
            +
              def _reduce_67( val, _values)
         | 
| 1314 | 
            +
             Address.new( val[0], val[2] )
         | 
| 1315 | 
            +
              end
         | 
| 1316 | 
            +
            .,.,
         | 
| 1317 | 
            +
             | 
| 1318 | 
            +
            module_eval <<'.,.,', 'parser.y', 200
         | 
| 1319 | 
            +
              def _reduce_68( val, _values)
         | 
| 1320 | 
            +
             Address.new( val[0], nil )
         | 
| 1321 | 
            +
              end
         | 
| 1322 | 
            +
            .,.,
         | 
| 1323 | 
            +
             | 
| 1324 | 
            +
             # reduce 69 omitted
         | 
| 1325 | 
            +
             | 
| 1326 | 
            +
            module_eval <<'.,.,', 'parser.y', 203
         | 
| 1327 | 
            +
              def _reduce_70( val, _values)
         | 
| 1328 | 
            +
             val[0].push ''; val[0]
         | 
| 1329 | 
            +
              end
         | 
| 1330 | 
            +
            .,.,
         | 
| 1331 | 
            +
             | 
| 1332 | 
            +
            module_eval <<'.,.,', 'parser.y', 206
         | 
| 1333 | 
            +
              def _reduce_71( val, _values)
         | 
| 1334 | 
            +
             val
         | 
| 1335 | 
            +
              end
         | 
| 1336 | 
            +
            .,.,
         | 
| 1337 | 
            +
             | 
| 1338 | 
            +
            module_eval <<'.,.,', 'parser.y', 209
         | 
| 1339 | 
            +
              def _reduce_72( val, _values)
         | 
| 1340 | 
            +
                              val[1].times do
         | 
| 1341 | 
            +
                                val[0].push ''
         | 
| 1342 | 
            +
                              end
         | 
| 1343 | 
            +
                              val[0].push val[2]
         | 
| 1344 | 
            +
                              val[0]
         | 
| 1345 | 
            +
              end
         | 
| 1346 | 
            +
            .,.,
         | 
| 1347 | 
            +
             | 
| 1348 | 
            +
            module_eval <<'.,.,', 'parser.y', 217
         | 
| 1349 | 
            +
              def _reduce_73( val, _values)
         | 
| 1350 | 
            +
             val
         | 
| 1351 | 
            +
              end
         | 
| 1352 | 
            +
            .,.,
         | 
| 1353 | 
            +
             | 
| 1354 | 
            +
            module_eval <<'.,.,', 'parser.y', 220
         | 
| 1355 | 
            +
              def _reduce_74( val, _values)
         | 
| 1356 | 
            +
                              val[1].times do
         | 
| 1357 | 
            +
                                val[0].push ''
         | 
| 1358 | 
            +
                              end
         | 
| 1359 | 
            +
                              val[0].push val[2]
         | 
| 1360 | 
            +
                              val[0]
         | 
| 1361 | 
            +
              end
         | 
| 1362 | 
            +
            .,.,
         | 
| 1363 | 
            +
             | 
| 1364 | 
            +
            module_eval <<'.,.,', 'parser.y', 227
         | 
| 1365 | 
            +
              def _reduce_75( val, _values)
         | 
| 1366 | 
            +
             0
         | 
| 1367 | 
            +
              end
         | 
| 1368 | 
            +
            .,.,
         | 
| 1369 | 
            +
             | 
| 1370 | 
            +
            module_eval <<'.,.,', 'parser.y', 228
         | 
| 1371 | 
            +
              def _reduce_76( val, _values)
         | 
| 1372 | 
            +
             1
         | 
| 1373 | 
            +
              end
         | 
| 1374 | 
            +
            .,.,
         | 
| 1375 | 
            +
             | 
| 1376 | 
            +
             # reduce 77 omitted
         | 
| 1377 | 
            +
             | 
| 1378 | 
            +
             # reduce 78 omitted
         | 
| 1379 | 
            +
             | 
| 1380 | 
            +
             # reduce 79 omitted
         | 
| 1381 | 
            +
             | 
| 1382 | 
            +
             # reduce 80 omitted
         | 
| 1383 | 
            +
             | 
| 1384 | 
            +
             # reduce 81 omitted
         | 
| 1385 | 
            +
             | 
| 1386 | 
            +
             # reduce 82 omitted
         | 
| 1387 | 
            +
             | 
| 1388 | 
            +
             # reduce 83 omitted
         | 
| 1389 | 
            +
             | 
| 1390 | 
            +
             # reduce 84 omitted
         | 
| 1391 | 
            +
             | 
| 1392 | 
            +
            module_eval <<'.,.,', 'parser.y', 243
         | 
| 1393 | 
            +
              def _reduce_85( val, _values)
         | 
| 1394 | 
            +
                              val[1] = val[1].spec
         | 
| 1395 | 
            +
                              val.join('')
         | 
| 1396 | 
            +
              end
         | 
| 1397 | 
            +
            .,.,
         | 
| 1398 | 
            +
             | 
| 1399 | 
            +
            module_eval <<'.,.,', 'parser.y', 247
         | 
| 1400 | 
            +
              def _reduce_86( val, _values)
         | 
| 1401 | 
            +
             val
         | 
| 1402 | 
            +
              end
         | 
| 1403 | 
            +
            .,.,
         | 
| 1404 | 
            +
             | 
| 1405 | 
            +
            module_eval <<'.,.,', 'parser.y', 248
         | 
| 1406 | 
            +
              def _reduce_87( val, _values)
         | 
| 1407 | 
            +
             val[0].push val[2]; val[0]
         | 
| 1408 | 
            +
              end
         | 
| 1409 | 
            +
            .,.,
         | 
| 1410 | 
            +
             | 
| 1411 | 
            +
             # reduce 88 omitted
         | 
| 1412 | 
            +
             | 
| 1413 | 
            +
            module_eval <<'.,.,', 'parser.y', 251
         | 
| 1414 | 
            +
              def _reduce_89( val, _values)
         | 
| 1415 | 
            +
             val[0] << ' ' << val[1]
         | 
| 1416 | 
            +
              end
         | 
| 1417 | 
            +
            .,.,
         | 
| 1418 | 
            +
             | 
| 1419 | 
            +
            module_eval <<'.,.,', 'parser.y', 255
         | 
| 1420 | 
            +
              def _reduce_90( val, _values)
         | 
| 1421 | 
            +
                              val.push nil
         | 
| 1422 | 
            +
                              val
         | 
| 1423 | 
            +
              end
         | 
| 1424 | 
            +
            .,.,
         | 
| 1425 | 
            +
             | 
| 1426 | 
            +
            module_eval <<'.,.,', 'parser.y', 260
         | 
| 1427 | 
            +
              def _reduce_91( val, _values)
         | 
| 1428 | 
            +
                              val
         | 
| 1429 | 
            +
              end
         | 
| 1430 | 
            +
            .,.,
         | 
| 1431 | 
            +
             | 
| 1432 | 
            +
            module_eval <<'.,.,', 'parser.y', 265
         | 
| 1433 | 
            +
              def _reduce_92( val, _values)
         | 
| 1434 | 
            +
                              [ val[0].to_i, val[2].to_i ]
         | 
| 1435 | 
            +
              end
         | 
| 1436 | 
            +
            .,.,
         | 
| 1437 | 
            +
             | 
| 1438 | 
            +
            module_eval <<'.,.,', 'parser.y', 270
         | 
| 1439 | 
            +
              def _reduce_93( val, _values)
         | 
| 1440 | 
            +
                              [ val[0].downcase, val[2].downcase, decode_params(val[3]) ]
         | 
| 1441 | 
            +
              end
         | 
| 1442 | 
            +
            .,.,
         | 
| 1443 | 
            +
             | 
| 1444 | 
            +
            module_eval <<'.,.,', 'parser.y', 274
         | 
| 1445 | 
            +
              def _reduce_94( val, _values)
         | 
| 1446 | 
            +
                              [ val[0].downcase, nil, decode_params(val[1]) ]
         | 
| 1447 | 
            +
              end
         | 
| 1448 | 
            +
            .,.,
         | 
| 1449 | 
            +
             | 
| 1450 | 
            +
            module_eval <<'.,.,', 'parser.y', 279
         | 
| 1451 | 
            +
              def _reduce_95( val, _values)
         | 
| 1452 | 
            +
                              {}
         | 
| 1453 | 
            +
              end
         | 
| 1454 | 
            +
            .,.,
         | 
| 1455 | 
            +
             | 
| 1456 | 
            +
            module_eval <<'.,.,', 'parser.y', 283
         | 
| 1457 | 
            +
              def _reduce_96( val, _values)
         | 
| 1458 | 
            +
                              val[0][ val[2].downcase ] = val[4]
         | 
| 1459 | 
            +
                              val[0]
         | 
| 1460 | 
            +
              end
         | 
| 1461 | 
            +
            .,.,
         | 
| 1462 | 
            +
             | 
| 1463 | 
            +
             # reduce 97 omitted
         | 
| 1464 | 
            +
             | 
| 1465 | 
            +
             # reduce 98 omitted
         | 
| 1466 | 
            +
             | 
| 1467 | 
            +
            module_eval <<'.,.,', 'parser.y', 292
         | 
| 1468 | 
            +
              def _reduce_99( val, _values)
         | 
| 1469 | 
            +
                              val[0].downcase
         | 
| 1470 | 
            +
              end
         | 
| 1471 | 
            +
            .,.,
         | 
| 1472 | 
            +
             | 
| 1473 | 
            +
            module_eval <<'.,.,', 'parser.y', 297
         | 
| 1474 | 
            +
              def _reduce_100( val, _values)
         | 
| 1475 | 
            +
                              [ val[0].downcase, decode_params(val[1]) ]
         | 
| 1476 | 
            +
              end
         | 
| 1477 | 
            +
            .,.,
         | 
| 1478 | 
            +
             | 
| 1479 | 
            +
             # reduce 101 omitted
         | 
| 1480 | 
            +
             | 
| 1481 | 
            +
             # reduce 102 omitted
         | 
| 1482 | 
            +
             | 
| 1483 | 
            +
             # reduce 103 omitted
         | 
| 1484 | 
            +
             | 
| 1485 | 
            +
             # reduce 104 omitted
         | 
| 1486 | 
            +
             | 
| 1487 | 
            +
             # reduce 105 omitted
         | 
| 1488 | 
            +
             | 
| 1489 | 
            +
             # reduce 106 omitted
         | 
| 1490 | 
            +
             | 
| 1491 | 
            +
             # reduce 107 omitted
         | 
| 1492 | 
            +
             | 
| 1493 | 
            +
             # reduce 108 omitted
         | 
| 1494 | 
            +
             | 
| 1495 | 
            +
             # reduce 109 omitted
         | 
| 1496 | 
            +
             | 
| 1497 | 
            +
             def _reduce_none( val, _values)
         | 
| 1498 | 
            +
              val[0]
         | 
| 1499 | 
            +
             end
         | 
| 1500 | 
            +
             | 
| 1501 | 
            +
              end   # class Parser
         | 
| 1502 | 
            +
             | 
| 1503 | 
            +
            end   # module TMail
         |