Factored out expression parser