Writing an Interpreter in Object Pascal: Part 1: Lexical and Basic Syntax Analysis