diff --git a/compiler/erg_parser/parse.rs b/compiler/erg_parser/parse.rs index 812c34cf..11612bb0 100644 --- a/compiler/erg_parser/parse.rs +++ b/compiler/erg_parser/parse.rs @@ -195,8 +195,7 @@ impl Runnable for ParserRunner { } fn eval(&mut self, src: Str) -> Result { - self.cfg.input = Input::Str(src); - let ast = self.parse()?; + let ast = self.parse_with_input(src)?; Ok(format!("{ast}")) } } @@ -222,6 +221,15 @@ impl ParserRunner { let mut self_ = Self::new(cfg); self_.parse() } + + fn parse_with_input(&mut self, src: Str) -> Result { + let ts = Lexer::new(Input::Str(src)) + .lex() + .map_err(|errs| ParserRunnerErrors::convert(self.input(), errs))?; + Parser::new(ts) + .parse(Str::ever(self.cfg.module)) + .map_err(|errs| ParserRunnerErrors::convert(self.input(), errs)) + } } impl Parser {