 	import mx.utils.StringUtil;
 	
 	import weave.api.compiler.ICompiledObject;
+	import weave.data.AttributeColumns.EquationColumnLib;
 	
 	/**
 	 * This class provides a static function compileEquation() that compiles a mathematical

			compileInfixOperators(tokens, '*/%', evaluateToConstantIfPossible);
			// step 8: compile '+' and '-' infix operators
			compileInfixOperators(tokens, '+-', evaluateToConstantIfPossible);
			// step 9: compile last token
			// there should be only a single token left
			if (tokens.length == 1)
				return tokens[0];

			constants["true"] = true;
			constants["false"] = false;
			
			// grouping operators
			operators["("] = true;
			operators[")"] = true;
			operators[","] = true;
			// math operators
			operators["*"] = MathLib.mul;
			operators["**"] = Math.pow;
			operators["/"] = MathLib.div;
			operators["%"] = MathLib.mod;
			operators["+"] = MathLib.add;
			operators["-"] = MathLib.sub;
			// bitwise operators
			operators["&"] = function(x:*, y:*):* { return x & y; };
			operators["|"] = function(x:*, y:*):* { return x | y; };
			operators["^"] = function(x:*, y:*):* { return x ^ y; };
			operators["<<"] = function(x:*, y:*):* { return x << y; };
			operators[">>"] = function(x:*, y:*):* { return x >> y; };
			// boolean operators
			operators["<"] = BooleanLib.lessThan;
			operators[">"] = BooleanLib.greaterThan;
			operators["&&"] = function(x:*, y:*):* { return x && y; };
			operators["||"] = function(x:*, y:*):* { return x || y; };
			operators["^^"] = function(x:*, y:*):* { return (x ? 1 : 0) ^ (y ? 1 : 0) }; // XOR boolean operator
			
			//operators["."] = ;

			// create a corresponding function name for each operator
			for (var op:String in operators)
				functions[OPERATOR_FUNCTION_NAME_PREFIX + op] = operators[op];
			
