lexer, parser, and translater