OSDN Git Service

fix parser a littele
authorTomohiro Nishimura <tomohiro68@gmail.com>
Fri, 26 Mar 2010 17:08:58 +0000 (02:08 +0900)
committerTomohiro Nishimura <tomohiro68@gmail.com>
Fri, 26 Mar 2010 17:08:58 +0000 (02:08 +0900)
lib/mint/builder/mint_expression_parser.rb
lib/mint/builder/mint_expression_parser.y

index f745ea5..6cbe54d 100644 (file)
@@ -329,7 +329,7 @@ module_eval(<<'.,.,', 'mint_expression_parser.y', 20)
 
 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, val[4]
+     n = node(val[1]); n.parenthesis = true; result = Mint::SubtractionNode.new(n, node(val[4])
     result
   end
 .,.,
index 1c82237..6c4d0b1 100644 (file)
@@ -13,27 +13,27 @@ class MintExpressionParser
     expression: exp | /* none */ { result = nil }
 
 # NEED: RootNode
-    exp: exp '+' exp           { result = Mint::AdditionNode.new(node(val[0]), node(val[2])) }
-       | exp '-' exp           { result = Mint::SubtractionNode.new(node(val[0]), node(val[2])) }
-       | exp '*' exp           { result = Mint::MultipleNode.new(node(val[0]), node(val[2])) }
-       | 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, val[4]) }
-       | '(' exp ')'           { n = node(val[1]); n.parenthesis = true; result = n }
-       | '-' 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]) }
-       | VARIABLE              { result = node(val[0]) }
-       | NUMBER                { result = node(val[0]) }
-
-    multiple: '(' exp ')'      { n = node(val[1]); n.parenthesis = true; result = n }
-            | ROOT '(' exp ')' { result = Mint::RootNode.new(val[2]) }
-            | VARIABLE         { result = node(val[0]) }
+    exp: exp '+' exp            { result = Mint::AdditionNode.new(node(val[0]), node(val[2])) }
+       | exp '-' exp            { result = Mint::SubtractionNode.new(node(val[0]), node(val[2])) }
+       | exp '*' exp            { result = Mint::MultipleNode.new(node(val[0]), node(val[2])) }
+       | 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 }
+       | '-' 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]) }
+       | VARIABLE               { result = node(val[0]) }
+       | NUMBER                 { result = node(val[0]) }
+
+    multiple: '(' exp ')'       { n = node(val[1]); n.parenthesis = true; result = n }
+            | ROOT '(' exp ')'  { result = Mint::RootNode.new(val[2]) }
+            | VARIABLE          { result = node(val[0]) }
 
     minus: '-' NUMBER   =UMINUS { result = minus(val[1]) }
          | '-' multiple =UMINUS { result = minus(val[1]) }