Text this: Formal Syntax and Semantics of Java