math recursive descent parser and evaluator