refactor: use pratt parser for if expressions