LexerとParserを個別に実装する理由