diff --git a/modules/base/pymod/table.py b/modules/base/pymod/table.py
index 65c9eba436df55f839ca2029831806c7b0315f1a..4e88a8bdd90aa8d7c24633489c802ef8e4af689a 100644
--- a/modules/base/pymod/table.py
+++ b/modules/base/pymod/table.py
@@ -1005,6 +1005,14 @@ Statistics for column %(col)s
     #gets returned.
 
 
+  def _LexerHelper(self, operand):
+    if len(operand.strip())>0:
+      if ' ' in operand.strip():
+        raise ValueError('Cannot Evaluate %s'%(operand))
+      return [operand.strip()]
+    return []
+
+
 
   def _ExpressionLexer(self, expression, valid_operators, precedence):
 
@@ -1127,51 +1135,63 @@ Statistics for column %(col)s
 
       token=expression[actual_position]
 
-      if token=='(' or token=='[' or token=='{':
-        if len(eaten_stuff.strip())>0:
-          op=eaten_stuff.strip()
-          if ' ' in op:
-            raise ValueError('cannot evaluate %s'%(op))
-          split_expression.append(op)
-          eaten_stuff=''
+      if token.isspace():
+        split_expression+=self._LexerHelper(eaten_stuff)
+        actual_position+=1
+        eaten_stuff=''
+        continue
+
+      if token in ['(','[','{']:
+        split_expression+=self._LexerHelper(eaten_stuff)
         split_expression.append('(')
         actual_position+=1
+        eaten_stuff=''
         continue
 
-      if token==')' or token==']' or token=='}':
-        if len(eaten_stuff.strip())>0:
-          op=eaten_stuff.strip()
-          if ' ' in op:
-            raise ValueError('cannot evaluate %s'%(op))
-          split_expression.append(op)
-          eaten_stuff=''
+      if token in [')',']','}']:
+        split_expression+=self._LexerHelper(eaten_stuff)
         split_expression.append(')')
         actual_position+=1
+        eaten_stuff=''
         continue
 
-      found_operator=False
+      if token in ['+','-','*','/','=']:
+        split_expression+=self._LexerHelper(eaten_stuff)
+        split_expression.append(token)
+        actual_position+=1
+        eaten_stuff=''
+        continue
 
-      for operator in valid_operators:
-        if actual_position+len(operator)>=len(expression):
+      if token == '!':
+        if actual_position+1==len(expression):
+          raise ValueError('Cannot evaluate \'!\'')
+        if expression[actual_position+1]== '=':
+          split_expression+=self._LexerHelper(eaten_stuff)
+          split_expression.append('!=')
+          actual_position+=2
+          eaten_stuff=''
           continue
-        if expression[actual_position:actual_position+len(operator)]==operator:
-          if len(eaten_stuff.strip())>0:
-            op=eaten_stuff.strip()
-            if ' ' in op:
-              raise ValueError('cannot evaluate %s'%(op))
-            split_expression.append(op)
+        else:
+          raise ValueError('Cannot evaluate single \'!\'')
+
+      if token in ['<','>']:
+        if actual_position+1<len(expression):
+          if expression[actual_position+1]=='=':
+            split_expression+=self._LexerHelper(eaten_stuff)
+            split_expression.append(token+'=')
+            actual_position+=2
             eaten_stuff=''
-          split_expression.append(operator)
-          actual_position+=len(operator)
-          found_operator=True
-          break
-
-      if found_operator:
+            continue
+        split_expression+=self._LexerHelper(eaten_stuff)
+        split_expression.append(token)
+        actual_position+=1
+        eaten_stuff=''
         continue
 
       eaten_stuff+=token
       actual_position+=1
 
+
   def Select(self, query):
 
     """