tmail 1.1.1

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