tool for writing definitions of programming languages
