grammar, lexer, parser