Update. 似乎lexer部分滥用shared_ptr了...