writeexcel 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. data/README +103 -0
  2. data/examples/a_simple.rb +42 -0
  3. data/examples/autofilters.rb +266 -0
  4. data/examples/copyformat.rb +51 -0
  5. data/examples/data_validate.rb +278 -0
  6. data/examples/date_time.rb +86 -0
  7. data/examples/demo.rb +118 -0
  8. data/examples/diag_border.rb +35 -0
  9. data/examples/formats.rb +489 -0
  10. data/examples/header.rb +136 -0
  11. data/examples/hidden.rb +28 -0
  12. data/examples/hyperlink.rb +42 -0
  13. data/examples/images.rb +52 -0
  14. data/examples/merge1.rb +39 -0
  15. data/examples/merge2.rb +44 -0
  16. data/examples/merge3.rb +65 -0
  17. data/examples/merge4.rb +82 -0
  18. data/examples/merge5.rb +79 -0
  19. data/examples/protection.rb +46 -0
  20. data/examples/regions.rb +52 -0
  21. data/examples/repeat.rb +42 -0
  22. data/examples/republic.png +0 -0
  23. data/examples/stats.rb +75 -0
  24. data/examples/stocks.rb +80 -0
  25. data/examples/tab_colors.rb +30 -0
  26. data/lib/writeexcel/biffwriter.rb +260 -0
  27. data/lib/writeexcel/chart.rb +217 -0
  28. data/lib/writeexcel/excelformulaparser.rb +573 -0
  29. data/lib/writeexcel/format.rb +1108 -0
  30. data/lib/writeexcel/formula.rb +986 -0
  31. data/lib/writeexcel/olewriter.rb +322 -0
  32. data/lib/writeexcel/properties.rb +250 -0
  33. data/lib/writeexcel/workbook.rb +2630 -0
  34. data/lib/writeexcel/worksheet.rb +6377 -0
  35. data/lib/writeexcel.rb +18 -0
  36. data/test/perl_output/README +31 -0
  37. data/test/perl_output/a_simple.xls +0 -0
  38. data/test/perl_output/biff_add_continue_testdata +0 -0
  39. data/test/perl_output/data_validate.xls +0 -0
  40. data/test/perl_output/date_time.xls +0 -0
  41. data/test/perl_output/demo.xls +0 -0
  42. data/test/perl_output/diag_border.xls +0 -0
  43. data/test/perl_output/f_font_biff +0 -0
  44. data/test/perl_output/f_font_key +1 -0
  45. data/test/perl_output/f_xf_biff +0 -0
  46. data/test/perl_output/file_font_biff +0 -0
  47. data/test/perl_output/file_font_key +1 -0
  48. data/test/perl_output/file_xf_biff +0 -0
  49. data/test/perl_output/headers.xls +0 -0
  50. data/test/perl_output/hidden.xls +0 -0
  51. data/test/perl_output/hyperlink.xls +0 -0
  52. data/test/perl_output/images.xls +0 -0
  53. data/test/perl_output/merge1.xls +0 -0
  54. data/test/perl_output/merge2.xls +0 -0
  55. data/test/perl_output/merge3.xls +0 -0
  56. data/test/perl_output/merge4.xls +0 -0
  57. data/test/perl_output/merge5.xls +0 -0
  58. data/test/perl_output/ole_write_header +0 -0
  59. data/test/perl_output/protection.xls +0 -0
  60. data/test/perl_output/regions.xls +0 -0
  61. data/test/perl_output/stats.xls +0 -0
  62. data/test/perl_output/stocks.xls +0 -0
  63. data/test/perl_output/tab_colors.xls +0 -0
  64. data/test/perl_output/unicode_cyrillic.xls +0 -0
  65. data/test/perl_output/workbook1.xls +0 -0
  66. data/test/perl_output/workbook2.xls +0 -0
  67. data/test/perl_output/ws_colinfo +1 -0
  68. data/test/perl_output/ws_store_colinfo +0 -0
  69. data/test/perl_output/ws_store_dimensions +0 -0
  70. data/test/perl_output/ws_store_filtermode +0 -0
  71. data/test/perl_output/ws_store_filtermode_off +0 -0
  72. data/test/perl_output/ws_store_filtermode_on +0 -0
  73. data/test/perl_output/ws_store_selection +0 -0
  74. data/test/perl_output/ws_store_window2 +1 -0
  75. data/test/republic.png +0 -0
  76. data/test/tc_all.rb +31 -0
  77. data/test/tc_biff.rb +104 -0
  78. data/test/tc_chart.rb +22 -0
  79. data/test/tc_example_match.rb +1280 -0
  80. data/test/tc_format.rb +1267 -0
  81. data/test/tc_formula.rb +63 -0
  82. data/test/tc_ole.rb +110 -0
  83. data/test/tc_workbook.rb +115 -0
  84. data/test/tc_worksheet.rb +115 -0
  85. data/test/test_00_IEEE_double.rb +14 -0
  86. data/test/test_01_add_worksheet.rb +12 -0
  87. data/test/test_02_merge_formats.rb +58 -0
  88. data/test/test_04_dimensions.rb +397 -0
  89. data/test/test_05_rows.rb +182 -0
  90. data/test/test_06_extsst.rb +80 -0
  91. data/test/test_11_date_time.rb +484 -0
  92. data/test/test_12_date_only.rb +506 -0
  93. data/test/test_13_date_seconds.rb +486 -0
  94. data/test/test_21_escher.rb +629 -0
  95. data/test/test_22_mso_drawing_group.rb +739 -0
  96. data/test/test_23_note.rb +78 -0
  97. data/test/test_24_txo.rb +80 -0
  98. data/test/test_26_autofilter.rb +327 -0
  99. data/test/test_27_autofilter.rb +144 -0
  100. data/test/test_28_autofilter.rb +174 -0
  101. data/test/test_29_process_jpg.rb +131 -0
  102. data/test/test_30_validation_dval.rb +82 -0
  103. data/test/test_31_validation_dv_strings.rb +131 -0
  104. data/test/test_32_validation_dv_formula.rb +211 -0
  105. data/test/test_40_property_types.rb +191 -0
  106. data/test/test_41_properties.rb +238 -0
  107. data/test/test_42_set_properties.rb +419 -0
  108. data/test/ts_all.rb +34 -0
  109. metadata +170 -0
@@ -0,0 +1,573 @@
1
+ #
2
+ # DO NOT MODIFY!!!!
3
+ # This file is automatically generated by Racc 1.4.6
4
+ # from Racc grammer file "".
5
+ #
6
+
7
+ require 'racc/parser.rb'
8
+ class ExcelFormulaParser < Racc::Parser
9
+ ##### State transition tables begin ###
10
+
11
+ racc_action_table = [
12
+ 16, 52, 25, 27, 29, 31, 33, 20, 19, 3,
13
+ nil, 53, 22, 18, nil, 4, 5, 6, 8, 12,
14
+ 13, 14, 15, 17, 16, 25, 27, 29, 31, 33,
15
+ nil, 10, nil, nil, nil, 16, nil, 18, nil, 4,
16
+ 5, 6, 8, 12, 13, 14, 15, 17, 18, 16,
17
+ 4, 5, 6, 8, 12, 13, 14, 15, 17, nil,
18
+ 16, nil, 18, nil, 4, 5, 6, 8, 12, 13,
19
+ 14, 15, 17, 18, 16, 4, 5, 6, 8, 12,
20
+ 13, 14, 15, 17, nil, 16, nil, 18, nil, 4,
21
+ 5, 6, 8, 12, 13, 14, 15, 17, 18, 16,
22
+ 4, 5, 6, 8, 12, 13, 14, 15, 17, nil,
23
+ 16, nil, 18, 36, 4, 5, 6, 8, 12, 13,
24
+ 14, 15, 17, 18, 16, 4, 5, 6, 8, 12,
25
+ 13, 14, 15, 17, nil, 16, nil, 18, nil, 4,
26
+ 5, 6, 8, 12, 13, 14, 15, 17, 18, 16,
27
+ 4, 5, 6, 8, 12, 13, 14, 15, 17, nil,
28
+ 16, nil, 18, nil, 4, 5, 6, 8, 12, 13,
29
+ 14, 15, 17, 18, 16, 4, 5, 6, 8, 12,
30
+ 13, 14, 15, 17, nil, 16, nil, 18, nil, 4,
31
+ 5, 6, 8, 12, 13, 14, 15, 17, 18, 16,
32
+ 4, 5, 6, 8, 12, 13, 14, 15, 17, nil,
33
+ 16, nil, 18, nil, 4, 5, 6, 8, 12, 13,
34
+ 14, 15, 17, 18, nil, 4, 5, 6, 8, 12,
35
+ 13, 14, 15, 17, 22, 23, 26, 28, 30, 32,
36
+ nil, nil, nil, nil, nil, 21, nil, 25, 27, 29,
37
+ 31, 33, nil, 51, 22, 23, 26, 28, 30, 32,
38
+ 22, 23, 26, 28, nil, nil, nil, 25, 27, 29,
39
+ 31, 33, nil, 25, 27, 29, 31, 33, 22, 23,
40
+ 26, 28, nil, nil, nil, 22, 23, 26, 28, 30,
41
+ 32, 25, 27, 29, 31, 33, 21, 24, 25, 27,
42
+ 29, 31, 33, 22, 23, 26, 28, 30, 32, nil,
43
+ nil, nil, nil, nil, 21, nil, 25, 27, 29, 31,
44
+ 33, 22, 23, 26, 28, 30, 32, nil, nil, nil,
45
+ nil, nil, 21, nil, 25, 27, 29, 31, 33, 22,
46
+ 23, 26, 28, 30, 32, 22, nil, nil, nil, nil,
47
+ 21, nil, 25, 27, 29, 31, 33, nil, 25, 27,
48
+ 29, 31, 33, 22, 23, 26, 28, 30, 32, 22,
49
+ 23, nil, nil, nil, 21, nil, 25, 27, 29, 31,
50
+ 33, nil, 25, 27, 29, 31, 33, 22, 23, 26,
51
+ 28, 30, 32, 22, 23, nil, nil, nil, 21, nil,
52
+ 25, 27, 29, 31, 33, nil, 25, 27, 29, 31,
53
+ 33, 22, 23, 26, 28, 30, 32, nil, nil, nil,
54
+ nil, nil, 21, nil, 25, 27, 29, 31, 33, 22,
55
+ 23, 26, 28, 30, 32, nil, nil, nil, nil, nil,
56
+ 21, nil, 25, 27, 29, 31, 33 ]
57
+
58
+ racc_action_check = [
59
+ 33, 38, 34, 34, 34, 34, 34, 4, 3, 1,
60
+ nil, 38, 40, 33, nil, 33, 33, 33, 33, 33,
61
+ 33, 33, 33, 33, 2, 40, 40, 40, 40, 40,
62
+ nil, 2, nil, nil, nil, 53, nil, 2, nil, 2,
63
+ 2, 2, 2, 2, 2, 2, 2, 2, 53, 32,
64
+ 53, 53, 53, 53, 53, 53, 53, 53, 53, nil,
65
+ 31, nil, 32, nil, 32, 32, 32, 32, 32, 32,
66
+ 32, 32, 32, 31, 16, 31, 31, 31, 31, 31,
67
+ 31, 31, 31, 31, nil, 18, nil, 16, nil, 16,
68
+ 16, 16, 16, 16, 16, 16, 16, 16, 18, 20,
69
+ 18, 18, 18, 18, 18, 18, 18, 18, 18, nil,
70
+ 21, nil, 20, 20, 20, 20, 20, 20, 20, 20,
71
+ 20, 20, 20, 21, 22, 21, 21, 21, 21, 21,
72
+ 21, 21, 21, 21, nil, 23, nil, 22, nil, 22,
73
+ 22, 22, 22, 22, 22, 22, 22, 22, 23, 25,
74
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, nil,
75
+ 26, nil, 25, nil, 25, 25, 25, 25, 25, 25,
76
+ 25, 25, 25, 26, 27, 26, 26, 26, 26, 26,
77
+ 26, 26, 26, 26, nil, 28, nil, 27, nil, 27,
78
+ 27, 27, 27, 27, 27, 27, 27, 27, 28, 29,
79
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, nil,
80
+ 30, nil, 29, nil, 29, 29, 29, 29, 29, 29,
81
+ 29, 29, 29, 30, nil, 30, 30, 30, 30, 30,
82
+ 30, 30, 30, 30, 35, 35, 35, 35, 35, 35,
83
+ nil, nil, nil, nil, nil, 35, nil, 35, 35, 35,
84
+ 35, 35, nil, 35, 39, 39, 39, 39, 39, 39,
85
+ 47, 47, 47, 47, nil, nil, nil, 39, 39, 39,
86
+ 39, 39, nil, 47, 47, 47, 47, 47, 49, 49,
87
+ 49, 49, nil, nil, nil, 7, 7, 7, 7, 7,
88
+ 7, 49, 49, 49, 49, 49, 7, 7, 7, 7,
89
+ 7, 7, 7, 37, 37, 37, 37, 37, 37, nil,
90
+ nil, nil, nil, nil, 37, nil, 37, 37, 37, 37,
91
+ 37, 48, 48, 48, 48, 48, 48, nil, nil, nil,
92
+ nil, nil, 48, nil, 48, 48, 48, 48, 48, 50,
93
+ 50, 50, 50, 50, 50, 41, nil, nil, nil, nil,
94
+ 50, nil, 50, 50, 50, 50, 50, nil, 41, 41,
95
+ 41, 41, 41, 42, 42, 42, 42, 42, 42, 43,
96
+ 43, nil, nil, nil, 42, nil, 42, 42, 42, 42,
97
+ 42, nil, 43, 43, 43, 43, 43, 44, 44, 44,
98
+ 44, 44, 44, 45, 45, nil, nil, nil, 44, nil,
99
+ 44, 44, 44, 44, 44, nil, 45, 45, 45, 45,
100
+ 45, 46, 46, 46, 46, 46, 46, nil, nil, nil,
101
+ nil, nil, 46, nil, 46, 46, 46, 46, 46, 54,
102
+ 54, 54, 54, 54, 54, nil, nil, nil, nil, nil,
103
+ 54, nil, 54, 54, 54, 54, 54 ]
104
+
105
+ racc_action_pointer = [
106
+ nil, 9, 16, 8, -14, nil, nil, 282, nil, nil,
107
+ nil, nil, nil, nil, nil, nil, 66, nil, 77, nil,
108
+ 91, 102, 116, 127, nil, 141, 152, 166, 177, 191,
109
+ 202, 52, 41, -8, -14, 231, nil, 300, -21, 251,
110
+ 9, 342, 360, 366, 384, 390, 408, 257, 318, 275,
111
+ 336, nil, nil, 27, 426 ]
112
+
113
+ racc_action_default = [
114
+ -2, -34, -1, -34, -20, -21, -22, -34, -23, -17,
115
+ -4, -29, -24, -25, -26, -27, -34, -28, -34, 55,
116
+ -34, -34, -34, -34, -3, -34, -34, -34, -34, -34,
117
+ -34, -34, -34, -34, -19, -34, -31, -32, -34, -16,
118
+ -9, -10, -11, -7, -12, -8, -13, -5, -14, -6,
119
+ -15, -18, -30, -34, -33 ]
120
+
121
+ racc_goto_table = [
122
+ 7, 1, 2, 38, nil, nil, nil, nil, nil, nil,
123
+ nil, nil, nil, nil, 34, nil, 35, nil, 37, 39,
124
+ 40, 41, nil, 42, 43, 44, 45, 46, 47, 48,
125
+ 49, 50, nil, nil, nil, nil, nil, nil, nil, nil,
126
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
127
+ nil, 54 ]
128
+
129
+ racc_goto_check = [
130
+ 3, 1, 2, 6, nil, nil, nil, nil, nil, nil,
131
+ nil, nil, nil, nil, 3, nil, 3, nil, 3, 3,
132
+ 3, 3, nil, 3, 3, 3, 3, 3, 3, 3,
133
+ 3, 3, nil, nil, nil, nil, nil, nil, nil, nil,
134
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
135
+ nil, 3 ]
136
+
137
+ racc_goto_pointer = [
138
+ nil, 1, 2, -2, nil, nil, -17 ]
139
+
140
+ racc_goto_default = [
141
+ nil, nil, nil, nil, 9, 11, nil ]
142
+
143
+ racc_reduce_table = [
144
+ 0, 0, :racc_error,
145
+ 1, 34, :_reduce_none,
146
+ 0, 35, :_reduce_2,
147
+ 3, 35, :_reduce_3,
148
+ 2, 35, :_reduce_none,
149
+ 3, 36, :_reduce_5,
150
+ 3, 36, :_reduce_6,
151
+ 3, 36, :_reduce_7,
152
+ 3, 36, :_reduce_8,
153
+ 3, 36, :_reduce_9,
154
+ 3, 36, :_reduce_10,
155
+ 3, 36, :_reduce_11,
156
+ 3, 36, :_reduce_12,
157
+ 3, 36, :_reduce_13,
158
+ 3, 36, :_reduce_14,
159
+ 3, 36, :_reduce_15,
160
+ 3, 36, :_reduce_16,
161
+ 1, 36, :_reduce_none,
162
+ 3, 37, :_reduce_18,
163
+ 2, 37, :_reduce_19,
164
+ 1, 37, :_reduce_none,
165
+ 1, 37, :_reduce_21,
166
+ 1, 37, :_reduce_22,
167
+ 1, 37, :_reduce_23,
168
+ 1, 37, :_reduce_24,
169
+ 1, 37, :_reduce_25,
170
+ 1, 37, :_reduce_26,
171
+ 1, 37, :_reduce_27,
172
+ 1, 37, :_reduce_28,
173
+ 1, 37, :_reduce_none,
174
+ 4, 38, :_reduce_30,
175
+ 3, 38, :_reduce_31,
176
+ 1, 39, :_reduce_32,
177
+ 3, 39, :_reduce_33 ]
178
+
179
+ racc_reduce_n = 34
180
+
181
+ racc_shift_n = 55
182
+
183
+ racc_token_table = {
184
+ false => 0,
185
+ :error => 1,
186
+ :UMINUS => 2,
187
+ "^" => 3,
188
+ "&" => 4,
189
+ "*" => 5,
190
+ "/" => 6,
191
+ "+" => 7,
192
+ "-" => 8,
193
+ "<" => 9,
194
+ ">" => 10,
195
+ "<=" => 11,
196
+ ">=" => 12,
197
+ "<>" => 13,
198
+ "=" => 14,
199
+ :EOL => 15,
200
+ :LT => 16,
201
+ :GT => 17,
202
+ :LE => 18,
203
+ :GE => 19,
204
+ :NE => 20,
205
+ "(" => 21,
206
+ ")" => 22,
207
+ :FUNC => 23,
208
+ :NUMBER => 24,
209
+ :STRING => 25,
210
+ :REF2D => 26,
211
+ :REF3D => 27,
212
+ :RANGE2D => 28,
213
+ :RANGE3D => 29,
214
+ :TRUE => 30,
215
+ :FALSE => 31,
216
+ "," => 32 }
217
+
218
+ racc_nt_base = 33
219
+
220
+ racc_use_result_var = true
221
+
222
+ Racc_arg = [
223
+ racc_action_table,
224
+ racc_action_check,
225
+ racc_action_default,
226
+ racc_action_pointer,
227
+ racc_goto_table,
228
+ racc_goto_check,
229
+ racc_goto_default,
230
+ racc_goto_pointer,
231
+ racc_nt_base,
232
+ racc_reduce_table,
233
+ racc_token_table,
234
+ racc_shift_n,
235
+ racc_reduce_n,
236
+ racc_use_result_var ]
237
+
238
+ Racc_token_to_s_table = [
239
+ "$end",
240
+ "error",
241
+ "UMINUS",
242
+ "\"^\"",
243
+ "\"&\"",
244
+ "\"*\"",
245
+ "\"/\"",
246
+ "\"+\"",
247
+ "\"-\"",
248
+ "\"<\"",
249
+ "\">\"",
250
+ "\"<=\"",
251
+ "\">=\"",
252
+ "\"<>\"",
253
+ "\"=\"",
254
+ "EOL",
255
+ "LT",
256
+ "GT",
257
+ "LE",
258
+ "GE",
259
+ "NE",
260
+ "\"(\"",
261
+ "\")\"",
262
+ "FUNC",
263
+ "NUMBER",
264
+ "STRING",
265
+ "REF2D",
266
+ "REF3D",
267
+ "RANGE2D",
268
+ "RANGE3D",
269
+ "TRUE",
270
+ "FALSE",
271
+ "\",\"",
272
+ "$start",
273
+ "formula",
274
+ "expr_list",
275
+ "expr",
276
+ "primary",
277
+ "funcall",
278
+ "args" ]
279
+
280
+ Racc_debug_parser = false
281
+
282
+ ##### State transition tables end #####
283
+
284
+ # reduce 0 omitted
285
+
286
+ # reduce 1 omitted
287
+
288
+ module_eval(<<'.,.,', 'excelformula.y', 20)
289
+ def _reduce_2(val, _values, result)
290
+ result = []
291
+ result
292
+ end
293
+ .,.,
294
+
295
+ module_eval(<<'.,.,', 'excelformula.y', 21)
296
+ def _reduce_3(val, _values, result)
297
+ result.push val[1], '_arg', '1'
298
+ result
299
+ end
300
+ .,.,
301
+
302
+ # reduce 4 omitted
303
+
304
+ module_eval(<<'.,.,', 'excelformula.y', 24)
305
+ def _reduce_5(val, _values, result)
306
+ result = [ val[0], val[2], 'ptgAdd' ]
307
+ result
308
+ end
309
+ .,.,
310
+
311
+ module_eval(<<'.,.,', 'excelformula.y', 25)
312
+ def _reduce_6(val, _values, result)
313
+ result = [ val[0], val[2], 'ptgSub' ]
314
+ result
315
+ end
316
+ .,.,
317
+
318
+ module_eval(<<'.,.,', 'excelformula.y', 26)
319
+ def _reduce_7(val, _values, result)
320
+ result = [ val[0], val[2], 'ptgMul' ]
321
+ result
322
+ end
323
+ .,.,
324
+
325
+ module_eval(<<'.,.,', 'excelformula.y', 27)
326
+ def _reduce_8(val, _values, result)
327
+ result = [ val[0], val[2], 'ptgDiv' ]
328
+ result
329
+ end
330
+ .,.,
331
+
332
+ module_eval(<<'.,.,', 'excelformula.y', 28)
333
+ def _reduce_9(val, _values, result)
334
+ result = [ val[0], val[2], 'ptgPower' ]
335
+ result
336
+ end
337
+ .,.,
338
+
339
+ module_eval(<<'.,.,', 'excelformula.y', 29)
340
+ def _reduce_10(val, _values, result)
341
+ result = [ val[0], val[2], 'ptgConcat' ]
342
+ result
343
+ end
344
+ .,.,
345
+
346
+ module_eval(<<'.,.,', 'excelformula.y', 30)
347
+ def _reduce_11(val, _values, result)
348
+ result = [ val[0], val[2], 'ptgLT' ]
349
+ result
350
+ end
351
+ .,.,
352
+
353
+ module_eval(<<'.,.,', 'excelformula.y', 31)
354
+ def _reduce_12(val, _values, result)
355
+ result = [ val[0], val[2], 'ptgGT' ]
356
+ result
357
+ end
358
+ .,.,
359
+
360
+ module_eval(<<'.,.,', 'excelformula.y', 32)
361
+ def _reduce_13(val, _values, result)
362
+ result = [ val[0], val[2], 'ptgLE' ]
363
+ result
364
+ end
365
+ .,.,
366
+
367
+ module_eval(<<'.,.,', 'excelformula.y', 33)
368
+ def _reduce_14(val, _values, result)
369
+ result = [ val[0], val[2], 'ptgGE' ]
370
+ result
371
+ end
372
+ .,.,
373
+
374
+ module_eval(<<'.,.,', 'excelformula.y', 34)
375
+ def _reduce_15(val, _values, result)
376
+ result = [ val[0], val[2], 'ptgNE' ]
377
+ result
378
+ end
379
+ .,.,
380
+
381
+ module_eval(<<'.,.,', 'excelformula.y', 35)
382
+ def _reduce_16(val, _values, result)
383
+ result = [ val[0], val[2], 'ptgEQ' ]
384
+ result
385
+ end
386
+ .,.,
387
+
388
+ # reduce 17 omitted
389
+
390
+ module_eval(<<'.,.,', 'excelformula.y', 38)
391
+ def _reduce_18(val, _values, result)
392
+ result = [ val[1], '_arg', '1', 'ptgParen']
393
+ result
394
+ end
395
+ .,.,
396
+
397
+ module_eval(<<'.,.,', 'excelformula.y', 39)
398
+ def _reduce_19(val, _values, result)
399
+ result = [ '_num', '-1', val[1], 'ptgMul' ]
400
+ result
401
+ end
402
+ .,.,
403
+
404
+ # reduce 20 omitted
405
+
406
+ module_eval(<<'.,.,', 'excelformula.y', 41)
407
+ def _reduce_21(val, _values, result)
408
+ result = [ '_num', val[0] ]
409
+ result
410
+ end
411
+ .,.,
412
+
413
+ module_eval(<<'.,.,', 'excelformula.y', 42)
414
+ def _reduce_22(val, _values, result)
415
+ result = [ '_str', val[0] ]
416
+ result
417
+ end
418
+ .,.,
419
+
420
+ module_eval(<<'.,.,', 'excelformula.y', 43)
421
+ def _reduce_23(val, _values, result)
422
+ result = [ '_ref2d', val[0] ]
423
+ result
424
+ end
425
+ .,.,
426
+
427
+ module_eval(<<'.,.,', 'excelformula.y', 44)
428
+ def _reduce_24(val, _values, result)
429
+ result = [ '_ref3d', val[0] ]
430
+ result
431
+ end
432
+ .,.,
433
+
434
+ module_eval(<<'.,.,', 'excelformula.y', 45)
435
+ def _reduce_25(val, _values, result)
436
+ result = [ '_range2d', val[0] ]
437
+ result
438
+ end
439
+ .,.,
440
+
441
+ module_eval(<<'.,.,', 'excelformula.y', 46)
442
+ def _reduce_26(val, _values, result)
443
+ result = [ '_range3d', val[0] ]
444
+ result
445
+ end
446
+ .,.,
447
+
448
+ module_eval(<<'.,.,', 'excelformula.y', 47)
449
+ def _reduce_27(val, _values, result)
450
+ result = [ 'ptgBool', '1' ]
451
+ result
452
+ end
453
+ .,.,
454
+
455
+ module_eval(<<'.,.,', 'excelformula.y', 48)
456
+ def _reduce_28(val, _values, result)
457
+ result = [ 'ptgBool', '0' ]
458
+ result
459
+ end
460
+ .,.,
461
+
462
+ # reduce 29 omitted
463
+
464
+ module_eval(<<'.,.,', 'excelformula.y', 51)
465
+ def _reduce_30(val, _values, result)
466
+ result = [ '_class', val[0], val[2], '_arg', val[2].size.to_s, '_func', val[0] ]
467
+ result
468
+ end
469
+ .,.,
470
+
471
+ module_eval(<<'.,.,', 'excelformula.y', 52)
472
+ def _reduce_31(val, _values, result)
473
+ result = [ '_func', val[0] ]
474
+ result
475
+ end
476
+ .,.,
477
+
478
+ module_eval(<<'.,.,', 'excelformula.y', 54)
479
+ def _reduce_32(val, _values, result)
480
+ result = val
481
+ result
482
+ end
483
+ .,.,
484
+
485
+ module_eval(<<'.,.,', 'excelformula.y', 55)
486
+ def _reduce_33(val, _values, result)
487
+ result.push val[2]
488
+ result
489
+ end
490
+ .,.,
491
+
492
+ def _reduce_none(val, _values, result)
493
+ val[0]
494
+ end
495
+
496
+ end # class ExcelFormulaParser
497
+
498
+
499
+ class ExcelFormulaParserError < StandardError; end
500
+
501
+ class Node
502
+
503
+ def exec_list(nodes)
504
+ v = nil
505
+ nodes.each { |i| v = i.evaluate }
506
+ v
507
+ end
508
+
509
+ def excelformulaparser_error(msg)
510
+ raise ExcelFormulaParserError,
511
+ "in #{fname}:#{lineno}: #{msg}"
512
+ end
513
+
514
+ end
515
+
516
+ class RootNode < Node
517
+
518
+ def initialize(tree)
519
+ @tree = tree
520
+ end
521
+
522
+ def evaluate
523
+ exec_list @tree
524
+ end
525
+
526
+ end
527
+
528
+
529
+ class FuncallNode < Node
530
+
531
+ def initialize(func, args)
532
+ @func = func
533
+ @args = args
534
+ end
535
+
536
+ def evaluate
537
+ arg = @args.collect {|i| i.evaluate }
538
+ out = []
539
+ arg.each { |i| o.push i }
540
+ o.push @func
541
+ p o
542
+ end
543
+
544
+ end
545
+
546
+ class NumberNode < Node
547
+
548
+ def initialize(val)
549
+ @val = val
550
+ end
551
+
552
+ def evaluate
553
+ p @val
554
+ end
555
+
556
+ end
557
+
558
+ class OperateNode < Node
559
+
560
+ def initialize(op, left, right)
561
+ @op = op
562
+ @left = left
563
+ @right = right
564
+ end
565
+
566
+ def evaluate
567
+ o = []
568
+ o.push @left
569
+ o.push @right
570
+ o.push @op
571
+ p o
572
+ end
573
+ end