It's been awhile, but I'm finally ready to resume development of BASIC Wrangler. The next major version should finally be able to convert from a numbered BASIC listing to a labeled listing. I'm using this as an opportunity to start converting it to use tokenization to process the listings. I thought about using PLY , but I really don't need its parsing capabilities, and so I've decided to use this lexer. After I decided to use that, I realized that I would need lists of BASIC keywords, and so I had to type up a bunch of files of keywords, so I could then process those into regex definitions to feed into the lexer. The current plan is to write the tokenizer to run in three passes: pass 1 to populate a list of all the lines in the listing for a sanity check, pass 2 to find all the jump targets, and pass 3 to replace the jump targets with labels and to reformat the listing.