From 663d39da5de239e8c33487b46c96ed4ce099623d Mon Sep 17 00:00:00 2001 From: GreasySlug <9619abgoni@gmail.com> Date: Sat, 10 Sep 2022 17:02:20 +0900 Subject: [PATCH] Add parsing func using input content instead of self.input() --- compiler/erg_parser/parse.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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 {