From 5e77d3c8283f8087c595466897b06700c9296639 Mon Sep 17 00:00:00 2001 From: Jonas Maier Date: Fri, 6 Mar 2026 20:56:14 +0100 Subject: $? and $! parsed --- src/parse.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/parse.rs b/src/parse.rs index b2433a8..45bfdc0 100644 --- a/src/parse.rs +++ b/src/parse.rs @@ -34,7 +34,7 @@ pub enum Ast { impl Ast { pub fn expand(self, e: &mut E) -> Res, E::Error> { match self { - Ast::AssignVar(assign_var) => todo!(), + Ast::AssignVar(_) => todo!(), Ast::Pipes(pipes) => Ok(Ast::Pipes(pipes.expand(e)?)), } } @@ -119,7 +119,7 @@ fn is_var_name(x: u8) -> bool { } #[derive(Debug, Clone)] -struct VarName { +pub struct VarName { name: BString, } @@ -215,7 +215,10 @@ impl Parse for ExpString { let x = b.peek(); - if is_var_begin(x) { + if x == b'?' || x == b'!' { + b.adv(); + p.push(StringPart::Var(VarName { name: vec![x] })) + } else if is_var_begin(x) { let v = VarName::parse(b)?; p.push(StringPart::Var(v)); } else if x == b'{' { @@ -284,6 +287,7 @@ impl Command { } } +#[allow(unused)] #[derive(Debug)] pub enum ParseError { /// "clean" EOF, i.e. not in the middle of something @@ -292,8 +296,6 @@ pub enum ParseError { /// "unclean" EOF, i.e. EOF after beginning a quoted string Incomplete, - UnexpectedPipe, - ExpectedAlphabetic, Unknown(u8), -- cgit v1.2.3