Introduction to Compiling Techniques: A First Course using ANSI C, LEX and YACC