first pass at a regex-based tokenizer