OSDN Git Service

refactored parser
[mint/mint-lib.git] / lib / mint / builder.rb
index 446091d..b78421e 100644 (file)
@@ -1,6 +1,7 @@
 # -*- coding: utf-8 -*-
 
-require 'builder/expression_parser'
+require 'builder/expression_tree'
+require 'builder/mint_expression_parser'
 
 module Mint
 
@@ -10,10 +11,17 @@ module Mint
 
     class << self
       def build(expression)
-        parser = ExpressionParser.new
+        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
+        @@parser ||= MintExpressionParser.new
       end
     end
   end