The duplication of operators in the tokenizer and the algorithm bothered me so much I had to fix it. So I did, and you can watch me fumble my way through that.
At this point it's probably worth mentioning that I don't really know C# very well.
Hmm…it looks like things are taking a while to load. Try again?