Compiler Construction Using Java, JavaCC, and Yacc