writeexcel 0.1.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.
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