if expression.nil? || expression.empty?
return NullExpression.new
end
+ parser.instance_variable_set(:@yydebug, true)
parser.parse(expression)
rescue
raise InvalidExpressionError, expression
module_eval(<<'.,.,', 'mint_expression_parser.y', 21)
def _reduce_9(val, _values, result)
- n = node(val[1]); n.parenthesis = true; result = Mint::SubtractionNode.new(n, node(val[4]))
+ result = Mint::SubtractionNode.new(add_parenthesis(node(val[1])), node(val[4]))
result
end
.,.,
module_eval(<<'.,.,', 'mint_expression_parser.y', 22)
def _reduce_10(val, _values, result)
- n = node(val[1]); n.parenthesis = true; result = n
+ result = add_parenthesis(node(val[1]))
result
end
.,.,
module_eval(<<'.,.,', 'mint_expression_parser.y', 29)
def _reduce_17(val, _values, result)
- n = node(val[1]); n.parenthesis = true; result = Mint::MultipleNode.new(n, val[3])
+ result = Mint::MultipleNode.new(add_parenthesis(node(val[1])), val[3])
result
end
.,.,
module_eval(<<'.,.,', 'mint_expression_parser.y', 33)
def _reduce_20(val, _values, result)
- n = node(val[1]); n.parenthesis = true; result = n
+ result = add_parenthesis(node(val[1]))
result
end
.,.,
| exp '/' exp { result = Mint::FractionNode.new(node(val[0]), add_parenthesis(node(val[2]))) }
| exp '^' exp { result = Mint::FactorialNode.new(node(val[0]), node(val[2])) }
| exp DIV exp { result = Mint::DivisionNode.new(node(val[0]), add_parenthesis(node(val[2]))) }
- | '(' exp ')' '-' NUMBER { n = node(val[1]); n.parenthesis = true; result = Mint::SubtractionNode.new(n, node(val[4])) }
- | '(' exp ')' { n = node(val[1]); n.parenthesis = true; result = n }
+ | '(' exp ')' '-' NUMBER { result = Mint::SubtractionNode.new(add_parenthesis(node(val[1])), node(val[4])) }
+ | '(' exp ')' { result = add_parenthesis(node(val[1])) }
| '-' NUMBER =UMINUS { result = minus(val[1]) }
| '-' multiple =UMINUS { result = minus(val[1]) }
| ROOT '(' exp ')' { result = Mint::RootNode.new(val[2]) }
| multiple multiple { result = Mint::MultipleNode.new(node(val[0]), node(val[1])) }
| NUMBER multiple { result = Mint::MultipleNode.new(node(val[0]), node(val[1])) }
| minus multiple { result = Mint::MultipleNode.new(node(val[0]), node(val[1])) }
- | '(' exp ')' exp { n = node(val[1]); n.parenthesis = true; result = Mint::MultipleNode.new(n, val[3]) }
+ | '(' exp ')' exp { result = Mint::MultipleNode.new(add_parenthesis(node(val[1])), val[3]) }
| VARIABLE { result = node(val[0]) }
| NUMBER { result = node(val[0]) }
- multiple: '(' exp ')' { n = node(val[1]); n.parenthesis = true; result = n }
+ multiple: '(' exp ')' { result = add_parenthesis(node(val[1])) }
| ROOT '(' exp ')' { result = Mint::RootNode.new(val[2]) }
| VARIABLE { result = node(val[0]) }