lib/writeexcel/excelformulaparser.rb in writeexcel-0.3.5 vs lib/writeexcel/excelformulaparser.rb in writeexcel-0.4.0
- old
+ new
@@ -1,586 +1,587 @@
-#
-# DO NOT MODIFY!!!!
-# This file is automatically generated by Racc 1.4.6
-# from Racc grammer file "".
-#
-
-require 'racc/parser.rb'
-class ExcelFormulaParser < Racc::Parser # :nodoc:
-##### State transition tables begin ###
-
-racc_action_table = [
- 16, 54, 26, 28, 30, 32, 34, 21, 20, 3,
- nil, nil, 53, 19, 23, 4, 5, 6, 7, 10,
- 13, 14, 15, 17, 18, 16, nil, 26, 28, 30,
- 32, 34, 8, nil, nil, nil, nil, 16, 19, nil,
- 4, 5, 6, 7, 10, 13, 14, 15, 17, 18,
- 19, 16, 4, 5, 6, 7, 10, 13, 14, 15,
- 17, 18, nil, 16, 19, nil, 4, 5, 6, 7,
- 10, 13, 14, 15, 17, 18, 19, 16, 4, 5,
- 6, 7, 10, 13, 14, 15, 17, 18, nil, 16,
- 19, nil, 4, 5, 6, 7, 10, 13, 14, 15,
- 17, 18, 19, 16, 4, 5, 6, 7, 10, 13,
- 14, 15, 17, 18, nil, 16, 19, 37, 4, 5,
- 6, 7, 10, 13, 14, 15, 17, 18, 19, 16,
- 4, 5, 6, 7, 10, 13, 14, 15, 17, 18,
- nil, 16, 19, nil, 4, 5, 6, 7, 10, 13,
- 14, 15, 17, 18, 19, 16, 4, 5, 6, 7,
- 10, 13, 14, 15, 17, 18, nil, 16, 19, nil,
- 4, 5, 6, 7, 10, 13, 14, 15, 17, 18,
- 19, 16, 4, 5, 6, 7, 10, 13, 14, 15,
- 17, 18, nil, 16, 19, nil, 4, 5, 6, 7,
- 10, 13, 14, 15, 17, 18, 19, 16, 4, 5,
- 6, 7, 10, 13, 14, 15, 17, 18, nil, 16,
- 19, nil, 4, 5, 6, 7, 10, 13, 14, 15,
- 17, 18, 19, nil, 4, 5, 6, 7, 10, 13,
- 14, 15, 17, 18, 23, 24, 27, 29, 31, 33,
- nil, nil, nil, nil, nil, 22, nil, 26, 28, 30,
- 32, 34, nil, 52, 23, 24, 27, 29, 31, 33,
- 23, 24, 27, 29, nil, nil, nil, 26, 28, 30,
- 32, 34, nil, 26, 28, 30, 32, 34, 23, 24,
- 27, 29, nil, nil, nil, 23, 24, 27, 29, 31,
- 33, 26, 28, 30, 32, 34, 22, 25, 26, 28,
- 30, 32, 34, 23, 24, 27, 29, 31, 33, nil,
- nil, nil, nil, nil, 22, nil, 26, 28, 30, 32,
- 34, 23, 24, 27, 29, 31, 33, nil, nil, nil,
- nil, nil, 22, nil, 26, 28, 30, 32, 34, 23,
- 24, 27, 29, 31, 33, 23, nil, nil, nil, nil,
- 22, nil, 26, 28, 30, 32, 34, nil, 26, 28,
- 30, 32, 34, 23, 24, 27, 29, 31, 33, 23,
- 24, nil, nil, nil, 22, nil, 26, 28, 30, 32,
- 34, nil, 26, 28, 30, 32, 34, 23, 24, 27,
- 29, 31, 33, 23, 24, nil, nil, nil, 22, nil,
- 26, 28, 30, 32, 34, nil, 26, 28, 30, 32,
- 34, 23, 24, 27, 29, 31, 33, nil, nil, nil,
- nil, nil, 22, nil, 26, 28, 30, 32, 34, 23,
- 24, 27, 29, 31, 33, nil, nil, nil, nil, nil,
- 22, nil, 26, 28, 30, 32, 34 ]
-
-racc_action_check = [
- 34, 39, 35, 35, 35, 35, 35, 4, 3, 1,
- nil, nil, 39, 34, 41, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 2, nil, 41, 41, 41,
- 41, 41, 2, nil, nil, nil, nil, 53, 2, nil,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 53, 33, 53, 53, 53, 53, 53, 53, 53, 53,
- 53, 53, nil, 32, 33, nil, 33, 33, 33, 33,
- 33, 33, 33, 33, 33, 33, 32, 16, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, nil, 19,
- 16, nil, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 19, 21, 19, 19, 19, 19, 19, 19,
- 19, 19, 19, 19, nil, 22, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21, 22, 23,
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
- nil, 24, 23, nil, 23, 23, 23, 23, 23, 23,
- 23, 23, 23, 23, 24, 26, 24, 24, 24, 24,
- 24, 24, 24, 24, 24, 24, nil, 27, 26, nil,
- 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
- 27, 28, 27, 27, 27, 27, 27, 27, 27, 27,
- 27, 27, nil, 29, 28, nil, 28, 28, 28, 28,
- 28, 28, 28, 28, 28, 28, 29, 30, 29, 29,
- 29, 29, 29, 29, 29, 29, 29, 29, nil, 31,
- 30, nil, 30, 30, 30, 30, 30, 30, 30, 30,
- 30, 30, 31, nil, 31, 31, 31, 31, 31, 31,
- 31, 31, 31, 31, 36, 36, 36, 36, 36, 36,
- nil, nil, nil, nil, nil, 36, nil, 36, 36, 36,
- 36, 36, nil, 36, 40, 40, 40, 40, 40, 40,
- 48, 48, 48, 48, nil, nil, nil, 40, 40, 40,
- 40, 40, nil, 48, 48, 48, 48, 48, 50, 50,
- 50, 50, nil, nil, nil, 9, 9, 9, 9, 9,
- 9, 50, 50, 50, 50, 50, 9, 9, 9, 9,
- 9, 9, 9, 38, 38, 38, 38, 38, 38, nil,
- nil, nil, nil, nil, 38, nil, 38, 38, 38, 38,
- 38, 49, 49, 49, 49, 49, 49, nil, nil, nil,
- nil, nil, 49, nil, 49, 49, 49, 49, 49, 51,
- 51, 51, 51, 51, 51, 42, nil, nil, nil, nil,
- 51, nil, 51, 51, 51, 51, 51, nil, 42, 42,
- 42, 42, 42, 43, 43, 43, 43, 43, 43, 44,
- 44, nil, nil, nil, 43, nil, 43, 43, 43, 43,
- 43, nil, 44, 44, 44, 44, 44, 45, 45, 45,
- 45, 45, 45, 46, 46, nil, nil, nil, 45, nil,
- 45, 45, 45, 45, 45, nil, 46, 46, 46, 46,
- 46, 47, 47, 47, 47, 47, 47, nil, nil, nil,
- nil, nil, 47, nil, 47, 47, 47, 47, 47, 55,
- 55, 55, 55, 55, 55, nil, nil, nil, nil, nil,
- 55, nil, 55, 55, 55, 55, 55 ]
-
-racc_action_pointer = [
- nil, 9, 17, 8, -14, nil, nil, nil, nil, 292,
- nil, nil, nil, nil, nil, nil, 69, nil, nil, 81,
- nil, 95, 107, 121, 133, nil, 147, 159, 173, 185,
- 199, 211, 55, 43, -8, -14, 241, nil, 310, -21,
- 261, 11, 352, 370, 376, 394, 400, 418, 267, 328,
- 285, 346, nil, 29, nil, 436 ]
-
-racc_action_default = [
- -2, -35, -1, -35, -20, -21, -22, -23, -4, -35,
- -24, -17, -30, -25, -26, -27, -35, -28, -29, -35,
- 56, -35, -35, -35, -35, -3, -35, -35, -35, -35,
- -35, -35, -35, -35, -35, -19, -35, -32, -33, -35,
- -16, -9, -10, -11, -7, -12, -8, -13, -5, -14,
- -6, -15, -18, -35, -31, -34 ]
-
-racc_goto_table = [
- 9, 1, 2, 39, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, 35, nil, nil, 36, nil, 38,
- 40, 41, 42, nil, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, 55 ]
-
-racc_goto_check = [
- 3, 1, 2, 6, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, 3, nil, nil, 3, nil, 3,
- 3, 3, 3, nil, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, 3 ]
-
-racc_goto_pointer = [
- nil, 1, 2, -2, nil, nil, -18 ]
-
-racc_goto_default = [
- nil, nil, nil, nil, 11, 12, nil ]
-
-racc_reduce_table = [
- 0, 0, :racc_error,
- 1, 35, :_reduce_none,
- 0, 36, :_reduce_2,
- 3, 36, :_reduce_3,
- 2, 36, :_reduce_none,
- 3, 37, :_reduce_5,
- 3, 37, :_reduce_6,
- 3, 37, :_reduce_7,
- 3, 37, :_reduce_8,
- 3, 37, :_reduce_9,
- 3, 37, :_reduce_10,
- 3, 37, :_reduce_11,
- 3, 37, :_reduce_12,
- 3, 37, :_reduce_13,
- 3, 37, :_reduce_14,
- 3, 37, :_reduce_15,
- 3, 37, :_reduce_16,
- 1, 37, :_reduce_none,
- 3, 38, :_reduce_18,
- 2, 38, :_reduce_19,
- 1, 38, :_reduce_none,
- 1, 38, :_reduce_21,
- 1, 38, :_reduce_22,
- 1, 38, :_reduce_23,
- 1, 38, :_reduce_24,
- 1, 38, :_reduce_25,
- 1, 38, :_reduce_26,
- 1, 38, :_reduce_27,
- 1, 38, :_reduce_28,
- 1, 38, :_reduce_29,
- 1, 38, :_reduce_none,
- 4, 39, :_reduce_31,
- 3, 39, :_reduce_32,
- 1, 40, :_reduce_33,
- 3, 40, :_reduce_34 ]
-
-racc_reduce_n = 35
-
-racc_shift_n = 56
-
-racc_token_table = {
- false => 0,
- :error => 1,
- :UMINUS => 2,
- "^" => 3,
- "&" => 4,
- "*" => 5,
- "/" => 6,
- "+" => 7,
- "-" => 8,
- "<" => 9,
- ">" => 10,
- "<=" => 11,
- ">=" => 12,
- "<>" => 13,
- "=" => 14,
- :EOL => 15,
- :LT => 16,
- :GT => 17,
- :LE => 18,
- :GE => 19,
- :NE => 20,
- "(" => 21,
- ")" => 22,
- :FUNC => 23,
- :NUMBER => 24,
- :STRING => 25,
- :REF2D => 26,
- :REF3D => 27,
- :RANGE2D => 28,
- :RANGE3D => 29,
- :NAME => 30,
- :TRUE => 31,
- :FALSE => 32,
- "," => 33 }
-
-racc_nt_base = 34
-
-racc_use_result_var = true
-
-Racc_arg = [
- racc_action_table,
- racc_action_check,
- racc_action_default,
- racc_action_pointer,
- racc_goto_table,
- racc_goto_check,
- racc_goto_default,
- racc_goto_pointer,
- racc_nt_base,
- racc_reduce_table,
- racc_token_table,
- racc_shift_n,
- racc_reduce_n,
- racc_use_result_var ]
-
-Racc_token_to_s_table = [
- "$end",
- "error",
- "UMINUS",
- "\"^\"",
- "\"&\"",
- "\"*\"",
- "\"/\"",
- "\"+\"",
- "\"-\"",
- "\"<\"",
- "\">\"",
- "\"<=\"",
- "\">=\"",
- "\"<>\"",
- "\"=\"",
- "EOL",
- "LT",
- "GT",
- "LE",
- "GE",
- "NE",
- "\"(\"",
- "\")\"",
- "FUNC",
- "NUMBER",
- "STRING",
- "REF2D",
- "REF3D",
- "RANGE2D",
- "RANGE3D",
- "NAME",
- "TRUE",
- "FALSE",
- "\",\"",
- "$start",
- "formula",
- "expr_list",
- "expr",
- "primary",
- "funcall",
- "args" ]
-
-Racc_debug_parser = false
-
-##### State transition tables end #####
-
-# reduce 0 omitted
-
-# reduce 1 omitted
-
-module_eval(<<'.,.,', 'excelformula.y', 20)
- def _reduce_2(val, _values, result)
- result = []
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'excelformula.y', 21)
- def _reduce_3(val, _values, result)
- result.push val[1], '_arg', '1'
- result
- end
-.,.,
-
-# reduce 4 omitted
-
-module_eval(<<'.,.,', 'excelformula.y', 24)
- def _reduce_5(val, _values, result)
- result = [ val[0], val[2], 'ptgAdd' ]
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'excelformula.y', 25)
- def _reduce_6(val, _values, result)
- result = [ val[0], val[2], 'ptgSub' ]
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'excelformula.y', 26)
- def _reduce_7(val, _values, result)
- result = [ val[0], val[2], 'ptgMul' ]
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'excelformula.y', 27)
- def _reduce_8(val, _values, result)
- result = [ val[0], val[2], 'ptgDiv' ]
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'excelformula.y', 28)
- def _reduce_9(val, _values, result)
- result = [ val[0], val[2], 'ptgPower' ]
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'excelformula.y', 29)
- def _reduce_10(val, _values, result)
- result = [ val[0], val[2], 'ptgConcat' ]
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'excelformula.y', 30)
- def _reduce_11(val, _values, result)
- result = [ val[0], val[2], 'ptgLT' ]
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'excelformula.y', 31)
- def _reduce_12(val, _values, result)
- result = [ val[0], val[2], 'ptgGT' ]
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'excelformula.y', 32)
- def _reduce_13(val, _values, result)
- result = [ val[0], val[2], 'ptgLE' ]
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'excelformula.y', 33)
- def _reduce_14(val, _values, result)
- result = [ val[0], val[2], 'ptgGE' ]
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'excelformula.y', 34)
- def _reduce_15(val, _values, result)
- result = [ val[0], val[2], 'ptgNE' ]
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'excelformula.y', 35)
- def _reduce_16(val, _values, result)
- result = [ val[0], val[2], 'ptgEQ' ]
- result
- end
-.,.,
-
-# reduce 17 omitted
-
-module_eval(<<'.,.,', 'excelformula.y', 38)
- def _reduce_18(val, _values, result)
- result = [ val[1], '_arg', '1', 'ptgParen']
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'excelformula.y', 39)
- def _reduce_19(val, _values, result)
- result = [ '_num', '-1', val[1], 'ptgMul' ]
- result
- end
-.,.,
-
-# reduce 20 omitted
-
-module_eval(<<'.,.,', 'excelformula.y', 41)
- def _reduce_21(val, _values, result)
- result = [ '_num', val[0] ]
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'excelformula.y', 42)
- def _reduce_22(val, _values, result)
- result = [ '_str', val[0] ]
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'excelformula.y', 43)
- def _reduce_23(val, _values, result)
- result = [ '_ref2d', val[0] ]
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'excelformula.y', 44)
- def _reduce_24(val, _values, result)
- result = [ '_ref3d', val[0] ]
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'excelformula.y', 45)
- def _reduce_25(val, _values, result)
- result = [ '_range2d', val[0] ]
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'excelformula.y', 46)
- def _reduce_26(val, _values, result)
- result = [ '_range3d', val[0] ]
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'excelformula.y', 47)
- def _reduce_27(val, _values, result)
- result = [ '_name', val[0] ]
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'excelformula.y', 48)
- def _reduce_28(val, _values, result)
- result = [ 'ptgBool', '1' ]
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'excelformula.y', 49)
- def _reduce_29(val, _values, result)
- result = [ 'ptgBool', '0' ]
- result
- end
-.,.,
-
-# reduce 30 omitted
-
-module_eval(<<'.,.,', 'excelformula.y', 52)
- def _reduce_31(val, _values, result)
- result = [ '_class', val[0], val[2], '_arg', val[2].size.to_s, '_func', val[0] ]
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'excelformula.y', 53)
- def _reduce_32(val, _values, result)
- result = [ '_func', val[0] ]
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'excelformula.y', 55)
- def _reduce_33(val, _values, result)
- result = val
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'excelformula.y', 56)
- def _reduce_34(val, _values, result)
- result.push val[2]
- result
- end
-.,.,
-
- def _reduce_none(val, _values, result)
- val[0]
- end
-
-end # class ExcelFormulaParser
-
-
-class ExcelFormulaParserError < StandardError #:nodoc:
-end
-
-class Node # :nodoc:
-
- def exec_list(nodes)
- v = nil
- nodes.each { |i| v = i.evaluate }
- v
- end
-
- def excelformulaparser_error(msg)
- raise ExcelFormulaParserError,
- "in #{fname}:#{lineno}: #{msg}"
- end
-
-end
-
-class RootNode < Node # :nodoc:
-
- def initialize(tree)
- @tree = tree
- end
-
- def evaluate
- exec_list @tree
- end
-
-end
-
-
-class FuncallNode < Node # :nodoc:
-
- def initialize(func, args)
- @func = func
- @args = args
- end
-
- def evaluate
- arg = @args.collect {|i| i.evaluate }
- out = []
- arg.each { |i| o.push i }
- o.push @func
- p o
- end
-
-end
-
-class NumberNode < Node # :nodoc:
-
- def initialize(val)
- @val = val
- end
-
- def evaluate
- p @val
- end
-
-end
-
-class OperateNode < Node # :nodoc:
-
- def initialize(op, left, right)
- @op = op
- @left = left
- @right = right
- end
-
- def evaluate
- o = []
- o.push @left
- o.push @right
- o.push @op
- p o
- end
-end
+# -*- coding: utf-8 -*-
+#
+# DO NOT MODIFY!!!!
+# This file is automatically generated by Racc 1.4.6
+# from Racc grammer file "".
+#
+
+require 'racc/parser.rb'
+class ExcelFormulaParser < Racc::Parser # :nodoc:
+##### State transition tables begin ###
+
+racc_action_table = [
+ 16, 54, 26, 28, 30, 32, 34, 21, 20, 3,
+ nil, nil, 53, 19, 23, 4, 5, 6, 7, 10,
+ 13, 14, 15, 17, 18, 16, nil, 26, 28, 30,
+ 32, 34, 8, nil, nil, nil, nil, 16, 19, nil,
+ 4, 5, 6, 7, 10, 13, 14, 15, 17, 18,
+ 19, 16, 4, 5, 6, 7, 10, 13, 14, 15,
+ 17, 18, nil, 16, 19, nil, 4, 5, 6, 7,
+ 10, 13, 14, 15, 17, 18, 19, 16, 4, 5,
+ 6, 7, 10, 13, 14, 15, 17, 18, nil, 16,
+ 19, nil, 4, 5, 6, 7, 10, 13, 14, 15,
+ 17, 18, 19, 16, 4, 5, 6, 7, 10, 13,
+ 14, 15, 17, 18, nil, 16, 19, 37, 4, 5,
+ 6, 7, 10, 13, 14, 15, 17, 18, 19, 16,
+ 4, 5, 6, 7, 10, 13, 14, 15, 17, 18,
+ nil, 16, 19, nil, 4, 5, 6, 7, 10, 13,
+ 14, 15, 17, 18, 19, 16, 4, 5, 6, 7,
+ 10, 13, 14, 15, 17, 18, nil, 16, 19, nil,
+ 4, 5, 6, 7, 10, 13, 14, 15, 17, 18,
+ 19, 16, 4, 5, 6, 7, 10, 13, 14, 15,
+ 17, 18, nil, 16, 19, nil, 4, 5, 6, 7,
+ 10, 13, 14, 15, 17, 18, 19, 16, 4, 5,
+ 6, 7, 10, 13, 14, 15, 17, 18, nil, 16,
+ 19, nil, 4, 5, 6, 7, 10, 13, 14, 15,
+ 17, 18, 19, nil, 4, 5, 6, 7, 10, 13,
+ 14, 15, 17, 18, 23, 24, 27, 29, 31, 33,
+ nil, nil, nil, nil, nil, 22, nil, 26, 28, 30,
+ 32, 34, nil, 52, 23, 24, 27, 29, 31, 33,
+ 23, 24, 27, 29, nil, nil, nil, 26, 28, 30,
+ 32, 34, nil, 26, 28, 30, 32, 34, 23, 24,
+ 27, 29, nil, nil, nil, 23, 24, 27, 29, 31,
+ 33, 26, 28, 30, 32, 34, 22, 25, 26, 28,
+ 30, 32, 34, 23, 24, 27, 29, 31, 33, nil,
+ nil, nil, nil, nil, 22, nil, 26, 28, 30, 32,
+ 34, 23, 24, 27, 29, 31, 33, nil, nil, nil,
+ nil, nil, 22, nil, 26, 28, 30, 32, 34, 23,
+ 24, 27, 29, 31, 33, 23, nil, nil, nil, nil,
+ 22, nil, 26, 28, 30, 32, 34, nil, 26, 28,
+ 30, 32, 34, 23, 24, 27, 29, 31, 33, 23,
+ 24, nil, nil, nil, 22, nil, 26, 28, 30, 32,
+ 34, nil, 26, 28, 30, 32, 34, 23, 24, 27,
+ 29, 31, 33, 23, 24, nil, nil, nil, 22, nil,
+ 26, 28, 30, 32, 34, nil, 26, 28, 30, 32,
+ 34, 23, 24, 27, 29, 31, 33, nil, nil, nil,
+ nil, nil, 22, nil, 26, 28, 30, 32, 34, 23,
+ 24, 27, 29, 31, 33, nil, nil, nil, nil, nil,
+ 22, nil, 26, 28, 30, 32, 34 ]
+
+racc_action_check = [
+ 34, 39, 35, 35, 35, 35, 35, 4, 3, 1,
+ nil, nil, 39, 34, 41, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 2, nil, 41, 41, 41,
+ 41, 41, 2, nil, nil, nil, nil, 53, 2, nil,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 53, 33, 53, 53, 53, 53, 53, 53, 53, 53,
+ 53, 53, nil, 32, 33, nil, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 32, 16, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, nil, 19,
+ 16, nil, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 19, 21, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, nil, 22, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21, 22, 23,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ nil, 24, 23, nil, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 24, 26, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, nil, 27, 26, nil,
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+ 27, 28, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, nil, 29, 28, nil, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 29, 30, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29, nil, 31,
+ 30, nil, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 31, nil, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 36, 36, 36, 36, 36, 36,
+ nil, nil, nil, nil, nil, 36, nil, 36, 36, 36,
+ 36, 36, nil, 36, 40, 40, 40, 40, 40, 40,
+ 48, 48, 48, 48, nil, nil, nil, 40, 40, 40,
+ 40, 40, nil, 48, 48, 48, 48, 48, 50, 50,
+ 50, 50, nil, nil, nil, 9, 9, 9, 9, 9,
+ 9, 50, 50, 50, 50, 50, 9, 9, 9, 9,
+ 9, 9, 9, 38, 38, 38, 38, 38, 38, nil,
+ nil, nil, nil, nil, 38, nil, 38, 38, 38, 38,
+ 38, 49, 49, 49, 49, 49, 49, nil, nil, nil,
+ nil, nil, 49, nil, 49, 49, 49, 49, 49, 51,
+ 51, 51, 51, 51, 51, 42, nil, nil, nil, nil,
+ 51, nil, 51, 51, 51, 51, 51, nil, 42, 42,
+ 42, 42, 42, 43, 43, 43, 43, 43, 43, 44,
+ 44, nil, nil, nil, 43, nil, 43, 43, 43, 43,
+ 43, nil, 44, 44, 44, 44, 44, 45, 45, 45,
+ 45, 45, 45, 46, 46, nil, nil, nil, 45, nil,
+ 45, 45, 45, 45, 45, nil, 46, 46, 46, 46,
+ 46, 47, 47, 47, 47, 47, 47, nil, nil, nil,
+ nil, nil, 47, nil, 47, 47, 47, 47, 47, 55,
+ 55, 55, 55, 55, 55, nil, nil, nil, nil, nil,
+ 55, nil, 55, 55, 55, 55, 55 ]
+
+racc_action_pointer = [
+ nil, 9, 17, 8, -14, nil, nil, nil, nil, 292,
+ nil, nil, nil, nil, nil, nil, 69, nil, nil, 81,
+ nil, 95, 107, 121, 133, nil, 147, 159, 173, 185,
+ 199, 211, 55, 43, -8, -14, 241, nil, 310, -21,
+ 261, 11, 352, 370, 376, 394, 400, 418, 267, 328,
+ 285, 346, nil, 29, nil, 436 ]
+
+racc_action_default = [
+ -2, -35, -1, -35, -20, -21, -22, -23, -4, -35,
+ -24, -17, -30, -25, -26, -27, -35, -28, -29, -35,
+ 56, -35, -35, -35, -35, -3, -35, -35, -35, -35,
+ -35, -35, -35, -35, -35, -19, -35, -32, -33, -35,
+ -16, -9, -10, -11, -7, -12, -8, -13, -5, -14,
+ -6, -15, -18, -35, -31, -34 ]
+
+racc_goto_table = [
+ 9, 1, 2, 39, nil, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, 35, nil, nil, 36, nil, 38,
+ 40, 41, 42, nil, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, 55 ]
+
+racc_goto_check = [
+ 3, 1, 2, 6, nil, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, 3, nil, nil, 3, nil, 3,
+ 3, 3, 3, nil, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, 3 ]
+
+racc_goto_pointer = [
+ nil, 1, 2, -2, nil, nil, -18 ]
+
+racc_goto_default = [
+ nil, nil, nil, nil, 11, 12, nil ]
+
+racc_reduce_table = [
+ 0, 0, :racc_error,
+ 1, 35, :_reduce_none,
+ 0, 36, :_reduce_2,
+ 3, 36, :_reduce_3,
+ 2, 36, :_reduce_none,
+ 3, 37, :_reduce_5,
+ 3, 37, :_reduce_6,
+ 3, 37, :_reduce_7,
+ 3, 37, :_reduce_8,
+ 3, 37, :_reduce_9,
+ 3, 37, :_reduce_10,
+ 3, 37, :_reduce_11,
+ 3, 37, :_reduce_12,
+ 3, 37, :_reduce_13,
+ 3, 37, :_reduce_14,
+ 3, 37, :_reduce_15,
+ 3, 37, :_reduce_16,
+ 1, 37, :_reduce_none,
+ 3, 38, :_reduce_18,
+ 2, 38, :_reduce_19,
+ 1, 38, :_reduce_none,
+ 1, 38, :_reduce_21,
+ 1, 38, :_reduce_22,
+ 1, 38, :_reduce_23,
+ 1, 38, :_reduce_24,
+ 1, 38, :_reduce_25,
+ 1, 38, :_reduce_26,
+ 1, 38, :_reduce_27,
+ 1, 38, :_reduce_28,
+ 1, 38, :_reduce_29,
+ 1, 38, :_reduce_none,
+ 4, 39, :_reduce_31,
+ 3, 39, :_reduce_32,
+ 1, 40, :_reduce_33,
+ 3, 40, :_reduce_34 ]
+
+racc_reduce_n = 35
+
+racc_shift_n = 56
+
+racc_token_table = {
+ false => 0,
+ :error => 1,
+ :UMINUS => 2,
+ "^" => 3,
+ "&" => 4,
+ "*" => 5,
+ "/" => 6,
+ "+" => 7,
+ "-" => 8,
+ "<" => 9,
+ ">" => 10,
+ "<=" => 11,
+ ">=" => 12,
+ "<>" => 13,
+ "=" => 14,
+ :EOL => 15,
+ :LT => 16,
+ :GT => 17,
+ :LE => 18,
+ :GE => 19,
+ :NE => 20,
+ "(" => 21,
+ ")" => 22,
+ :FUNC => 23,
+ :NUMBER => 24,
+ :STRING => 25,
+ :REF2D => 26,
+ :REF3D => 27,
+ :RANGE2D => 28,
+ :RANGE3D => 29,
+ :NAME => 30,
+ :TRUE => 31,
+ :FALSE => 32,
+ "," => 33 }
+
+racc_nt_base = 34
+
+racc_use_result_var = true
+
+Racc_arg = [
+ racc_action_table,
+ racc_action_check,
+ racc_action_default,
+ racc_action_pointer,
+ racc_goto_table,
+ racc_goto_check,
+ racc_goto_default,
+ racc_goto_pointer,
+ racc_nt_base,
+ racc_reduce_table,
+ racc_token_table,
+ racc_shift_n,
+ racc_reduce_n,
+ racc_use_result_var ]
+
+Racc_token_to_s_table = [
+ "$end",
+ "error",
+ "UMINUS",
+ "\"^\"",
+ "\"&\"",
+ "\"*\"",
+ "\"/\"",
+ "\"+\"",
+ "\"-\"",
+ "\"<\"",
+ "\">\"",
+ "\"<=\"",
+ "\">=\"",
+ "\"<>\"",
+ "\"=\"",
+ "EOL",
+ "LT",
+ "GT",
+ "LE",
+ "GE",
+ "NE",
+ "\"(\"",
+ "\")\"",
+ "FUNC",
+ "NUMBER",
+ "STRING",
+ "REF2D",
+ "REF3D",
+ "RANGE2D",
+ "RANGE3D",
+ "NAME",
+ "TRUE",
+ "FALSE",
+ "\",\"",
+ "$start",
+ "formula",
+ "expr_list",
+ "expr",
+ "primary",
+ "funcall",
+ "args" ]
+
+Racc_debug_parser = false
+
+##### State transition tables end #####
+
+# reduce 0 omitted
+
+# reduce 1 omitted
+
+module_eval(<<'.,.,', 'excelformula.y', 20)
+ def _reduce_2(val, _values, result)
+ result = []
+ result
+ end
+.,.,
+
+module_eval(<<'.,.,', 'excelformula.y', 21)
+ def _reduce_3(val, _values, result)
+ result.push val[1], '_arg', '1'
+ result
+ end
+.,.,
+
+# reduce 4 omitted
+
+module_eval(<<'.,.,', 'excelformula.y', 24)
+ def _reduce_5(val, _values, result)
+ result = [ val[0], val[2], 'ptgAdd' ]
+ result
+ end
+.,.,
+
+module_eval(<<'.,.,', 'excelformula.y', 25)
+ def _reduce_6(val, _values, result)
+ result = [ val[0], val[2], 'ptgSub' ]
+ result
+ end
+.,.,
+
+module_eval(<<'.,.,', 'excelformula.y', 26)
+ def _reduce_7(val, _values, result)
+ result = [ val[0], val[2], 'ptgMul' ]
+ result
+ end
+.,.,
+
+module_eval(<<'.,.,', 'excelformula.y', 27)
+ def _reduce_8(val, _values, result)
+ result = [ val[0], val[2], 'ptgDiv' ]
+ result
+ end
+.,.,
+
+module_eval(<<'.,.,', 'excelformula.y', 28)
+ def _reduce_9(val, _values, result)
+ result = [ val[0], val[2], 'ptgPower' ]
+ result
+ end
+.,.,
+
+module_eval(<<'.,.,', 'excelformula.y', 29)
+ def _reduce_10(val, _values, result)
+ result = [ val[0], val[2], 'ptgConcat' ]
+ result
+ end
+.,.,
+
+module_eval(<<'.,.,', 'excelformula.y', 30)
+ def _reduce_11(val, _values, result)
+ result = [ val[0], val[2], 'ptgLT' ]
+ result
+ end
+.,.,
+
+module_eval(<<'.,.,', 'excelformula.y', 31)
+ def _reduce_12(val, _values, result)
+ result = [ val[0], val[2], 'ptgGT' ]
+ result
+ end
+.,.,
+
+module_eval(<<'.,.,', 'excelformula.y', 32)
+ def _reduce_13(val, _values, result)
+ result = [ val[0], val[2], 'ptgLE' ]
+ result
+ end
+.,.,
+
+module_eval(<<'.,.,', 'excelformula.y', 33)
+ def _reduce_14(val, _values, result)
+ result = [ val[0], val[2], 'ptgGE' ]
+ result
+ end
+.,.,
+
+module_eval(<<'.,.,', 'excelformula.y', 34)
+ def _reduce_15(val, _values, result)
+ result = [ val[0], val[2], 'ptgNE' ]
+ result
+ end
+.,.,
+
+module_eval(<<'.,.,', 'excelformula.y', 35)
+ def _reduce_16(val, _values, result)
+ result = [ val[0], val[2], 'ptgEQ' ]
+ result
+ end
+.,.,
+
+# reduce 17 omitted
+
+module_eval(<<'.,.,', 'excelformula.y', 38)
+ def _reduce_18(val, _values, result)
+ result = [ val[1], '_arg', '1', 'ptgParen']
+ result
+ end
+.,.,
+
+module_eval(<<'.,.,', 'excelformula.y', 39)
+ def _reduce_19(val, _values, result)
+ result = [ '_num', '-1', val[1], 'ptgMul' ]
+ result
+ end
+.,.,
+
+# reduce 20 omitted
+
+module_eval(<<'.,.,', 'excelformula.y', 41)
+ def _reduce_21(val, _values, result)
+ result = [ '_num', val[0] ]
+ result
+ end
+.,.,
+
+module_eval(<<'.,.,', 'excelformula.y', 42)
+ def _reduce_22(val, _values, result)
+ result = [ '_str', val[0] ]
+ result
+ end
+.,.,
+
+module_eval(<<'.,.,', 'excelformula.y', 43)
+ def _reduce_23(val, _values, result)
+ result = [ '_ref2d', val[0] ]
+ result
+ end
+.,.,
+
+module_eval(<<'.,.,', 'excelformula.y', 44)
+ def _reduce_24(val, _values, result)
+ result = [ '_ref3d', val[0] ]
+ result
+ end
+.,.,
+
+module_eval(<<'.,.,', 'excelformula.y', 45)
+ def _reduce_25(val, _values, result)
+ result = [ '_range2d', val[0] ]
+ result
+ end
+.,.,
+
+module_eval(<<'.,.,', 'excelformula.y', 46)
+ def _reduce_26(val, _values, result)
+ result = [ '_range3d', val[0] ]
+ result
+ end
+.,.,
+
+module_eval(<<'.,.,', 'excelformula.y', 47)
+ def _reduce_27(val, _values, result)
+ result = [ '_name', val[0] ]
+ result
+ end
+.,.,
+
+module_eval(<<'.,.,', 'excelformula.y', 48)
+ def _reduce_28(val, _values, result)
+ result = [ 'ptgBool', '1' ]
+ result
+ end
+.,.,
+
+module_eval(<<'.,.,', 'excelformula.y', 49)
+ def _reduce_29(val, _values, result)
+ result = [ 'ptgBool', '0' ]
+ result
+ end
+.,.,
+
+# reduce 30 omitted
+
+module_eval(<<'.,.,', 'excelformula.y', 52)
+ def _reduce_31(val, _values, result)
+ result = [ '_class', val[0], val[2], '_arg', val[2].size.to_s, '_func', val[0] ]
+ result
+ end
+.,.,
+
+module_eval(<<'.,.,', 'excelformula.y', 53)
+ def _reduce_32(val, _values, result)
+ result = [ '_func', val[0] ]
+ result
+ end
+.,.,
+
+module_eval(<<'.,.,', 'excelformula.y', 55)
+ def _reduce_33(val, _values, result)
+ result = val
+ result
+ end
+.,.,
+
+module_eval(<<'.,.,', 'excelformula.y', 56)
+ def _reduce_34(val, _values, result)
+ result.push val[2]
+ result
+ end
+.,.,
+
+ def _reduce_none(val, _values, result)
+ val[0]
+ end
+
+end # class ExcelFormulaParser
+
+
+class ExcelFormulaParserError < StandardError #:nodoc:
+end
+
+class Node # :nodoc:
+
+ def exec_list(nodes)
+ v = nil
+ nodes.each { |i| v = i.evaluate }
+ v
+ end
+
+ def excelformulaparser_error(msg)
+ raise ExcelFormulaParserError,
+ "in #{fname}:#{lineno}: #{msg}"
+ end
+
+end
+
+class RootNode < Node # :nodoc:
+
+ def initialize(tree)
+ @tree = tree
+ end
+
+ def evaluate
+ exec_list @tree
+ end
+
+end
+
+
+class FuncallNode < Node # :nodoc:
+
+ def initialize(func, args)
+ @func = func
+ @args = args
+ end
+
+ def evaluate
+ arg = @args.collect {|i| i.evaluate }
+ out = []
+ arg.each { |i| o.push i }
+ o.push @func
+ p o
+ end
+
+end
+
+class NumberNode < Node # :nodoc:
+
+ def initialize(val)
+ @val = val
+ end
+
+ def evaluate
+ p @val
+ end
+
+end
+
+class OperateNode < Node # :nodoc:
+
+ def initialize(op, left, right)
+ @op = op
+ @left = left
+ @right = right
+ end
+
+ def evaluate
+ o = []
+ o.push @left
+ o.push @right
+ o.push @op
+ p o
+ end
+end