diff --git a/cranelift/isle/fuzz/fuzz_targets/parse.rs b/cranelift/isle/fuzz/fuzz_targets/parse.rs index 73cee40e87..67390f865c 100644 --- a/cranelift/isle/fuzz/fuzz_targets/parse.rs +++ b/cranelift/isle/fuzz/fuzz_targets/parse.rs @@ -9,9 +9,7 @@ fuzz_target!(|s: &str| { log::debug!("lexer = {:?}", lexer); if let Ok(lexer) = lexer { - let mut parser = isle::parser::Parser::new(lexer); - - let defs = parser.parse_defs(); + let defs = isle::parser::parse(lexer); log::debug!("defs = {:?}", defs); } }); diff --git a/cranelift/isle/isle/src/parser.rs b/cranelift/isle/isle/src/parser.rs index 1ad29881ec..8d8bbad5d8 100644 --- a/cranelift/isle/isle/src/parser.rs +++ b/cranelift/isle/isle/src/parser.rs @@ -4,11 +4,17 @@ use crate::ast::*; use crate::error::*; use crate::lexer::{Lexer, Pos, Token}; +/// Parse the top-level ISLE definitions and return their AST. +pub fn parse(lexer: Lexer) -> Result { + let parser = Parser::new(lexer); + parser.parse_defs() +} + /// The ISLE parser. /// /// Takes in a lexer and creates an AST. #[derive(Clone, Debug)] -pub struct Parser<'a> { +struct Parser<'a> { lexer: Lexer<'a>, } @@ -113,16 +119,15 @@ impl<'a> Parser<'a> { } } - /// Parse the top-level ISLE definitions and return their AST. - pub fn parse_defs(&mut self) -> Result { + fn parse_defs(mut self) -> Result { let mut defs = vec![]; while !self.lexer.eof() { defs.push(self.parse_def()?); } Ok(Defs { defs, - filenames: self.lexer.filenames.clone(), - file_texts: self.lexer.file_texts.clone(), + filenames: self.lexer.filenames, + file_texts: self.lexer.file_texts, }) } diff --git a/cranelift/isle/islec/src/main.rs b/cranelift/isle/islec/src/main.rs index 031c1769b8..c4e675d064 100644 --- a/cranelift/isle/islec/src/main.rs +++ b/cranelift/isle/islec/src/main.rs @@ -35,8 +35,7 @@ fn main() -> Result<()> { let opts = Opts::from_args(); let lexer = lexer::Lexer::from_files(opts.inputs)?; - let mut parser = parser::Parser::new(lexer); - let defs = parser.parse_defs()?; + let defs = parser::parse(lexer)?; let code = compile::compile(&defs)?; let stdout = io::stdout();