add lexer and parser