From d59109e8fffa1d0b03234329e12f5d3e578804e8 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Tue, 3 May 2022 15:58:15 +0200 Subject: Support recursive show rules --- src/parse/mod.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src/parse') diff --git a/src/parse/mod.rs b/src/parse/mod.rs index 32d61885..9f4860e7 100644 --- a/src/parse/mod.rs +++ b/src/parse/mod.rs @@ -807,9 +807,15 @@ fn set_expr(p: &mut Parser) -> ParseResult { fn show_expr(p: &mut Parser) -> ParseResult { p.perform(NodeKind::ShowExpr, |p| { p.assert(NodeKind::Show); - ident(p)?; - p.expect(NodeKind::Colon)?; - ident(p)?; + let marker = p.marker(); + expr(p)?; + if p.eat_if(NodeKind::Colon) { + marker.filter_children(p, |child| match child.kind() { + NodeKind::Ident(_) | NodeKind::Colon => Ok(()), + _ => Err("expected identifier"), + }); + expr(p)?; + } p.expect(NodeKind::As)?; expr(p) }) -- cgit v1.2.3