lexer, parser, interpreter