better error handling in rules and predicates, and allow numeric expressions without spaces