pratt parser example, with fancier 2-part tokenizer that supports more literals