From 287b57abd7f8f0630711984a390fd362f9d1774c Mon Sep 17 00:00:00 2001 From: John Date: Fri, 24 Oct 2025 05:25:38 -0400 Subject: [PATCH] main: print parse stats when parse errors --- src/main.rs | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index dab82c9..ef46cd0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -184,6 +184,13 @@ fn subst() -> Result<(), Box> { } } +fn plural(count: usize) -> &'static str { + match count { + 1 => "", + _ => "s", + } +} + fn parse(document: &str) { let mut parser = Parser::new(Lexer::new(document)); let verbose = !matches!( @@ -193,11 +200,21 @@ fn parse(document: &str) { for idx in 0.. { match parser.parse::(0) { Err(e @ ParseError::EOF(s)) if s.tail == document.len() as _ => { - println!("\x1b[92m{e} (total {} bytes)\x1b[0m", document.len()); + println!( + "\x1b[92m{e} (total {} byte{}, {idx} expression{})\x1b[0m", + document.len(), + plural(document.len()), + plural(idx), + ); break; } Err(e @ ParseError::EOF(_)) => { - println!("\x1b[93m{e} (total {} bytes)\x1b[0m", document.len()); + println!( + "\x1b[93m{e} (total {} byte{}, {idx} expression{})\x1b[0m", + document.len(), + plural(document.len()), + plural(idx), + ); break; } Err(e) => {