From 204467cba2f1bf9bf80f5b09f9e0947ae3020553 Mon Sep 17 00:00:00 2001 From: Shautvast Date: Mon, 6 Jan 2025 22:14:57 +0100 Subject: [PATCH] improved some things --- grammar.txt | 6 +++--- src/parser.rs | 20 ++++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/grammar.txt b/grammar.txt index e82a307..740bc9e 100644 --- a/grammar.txt +++ b/grammar.txt @@ -1,9 +1,9 @@ vis: markup | styles -markup: nodes +markup: "markup:" nodes elements: "{" element* "}" element: node | edge node: (id (":" title)? nodes?) | edgenode -edge: idref arrow idref +edge: from_id arrow to_id title? arrow: ArrowLeft | ArrowRight | DiamondArrowLeft | DiamondArrowRight ArrowLeft: "<--" ArrowRight: "-->" @@ -14,7 +14,7 @@ title: string string: """ text """ -styles: style* +styles: "styles" "{" style* "}" style: idref attributes? ":" style-elements style-elements: "{" style-element "}" style-element: key ":" value diff --git a/src/parser.rs b/src/parser.rs index 60a9fa2..620d90e 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -9,7 +9,7 @@ use anyhow::anyhow; pub fn parse_vis(contents: &str) -> anyhow::Result { let tokens = crate::scanner::scan(contents)?; - println!("{:?}", tokens); + // println!("{:?}", tokens); let mut parser = Parser::new(tokens); Ok(Vis { @@ -30,26 +30,26 @@ impl Parser { fn markup(&mut self) -> anyhow::Result> { if self.match_token(Markup) { - self.nodes() + self.elements() } else { Ok(vec![]) } } - fn nodes(&mut self) -> anyhow::Result> { - println!("nodes {:?}", self.peek()); + fn elements(&mut self) -> anyhow::Result> { + // println!("nodes {:?}", self.peek()); self.consume(LeftBrace, "Expected '{'")?; let mut nodes = vec![]; while !self.match_token(RightBrace) { - nodes.push(self.node()?); + nodes.push(self.element()?); } Ok(nodes) } - fn node(&mut self) -> anyhow::Result { - println!("node {:?}", self.peek()); + fn element(&mut self) -> anyhow::Result { + // println!("node {:?}", self.peek()); let id = self.id()?; - println!("id {}", id); + // println!("id {}", id); let current = self.peek().clone(); if self.match_tokens(vec![ ArrowRight, @@ -60,9 +60,9 @@ impl Parser { self.edge(id, current) } else { let title = self.title()?; - println!("title {:?}", title); + // println!("title {:?}", title); let children = if self.check(&LeftBrace) { - self.nodes()? + self.elements()? } else { vec![] };