wrote a lexer; nearly untested
round-tripped the new lexer through main
rebuilt parser; fixed a bug in if chains