OSDN Git Service

refactored parser
[mint/mint-lib.git] / lib / mint / builder.rb
index 7fa6451..b78421e 100644 (file)
@@ -1,5 +1,6 @@
 # -*- coding: utf-8 -*-
 
+require 'builder/expression_tree'
 require 'builder/mint_expression_parser'
 
 module Mint
@@ -10,10 +11,13 @@ module Mint
 
     class << self
       def build(expression)
-        normalized = parser.parse(expression)
-        Expression.new(expression, :normalized => normalized)
+        if expression.nil? || expression.empty?
+          return NullExpression.new
+        end
+        parser.instance_variable_set(:@yydebug, true)
+        parser.parse(expression)
       rescue
-        raise InvalidExpressionError
+        raise InvalidExpressionError, expression
       end
 
       def parser