improved some things

This commit is contained in:
Shautvast 2025-01-06 22:14:57 +01:00
parent b3ed4b3254
commit 204467cba2
2 changed files with 13 additions and 13 deletions

View file

@ -1,9 +1,9 @@
vis: markup | styles vis: markup | styles
markup: nodes markup: "markup:" nodes
elements: "{" element* "}" elements: "{" element* "}"
element: node | edge element: node | edge
node: (id (":" title)? nodes?) | edgenode node: (id (":" title)? nodes?) | edgenode
edge: idref arrow idref edge: from_id arrow to_id title?
arrow: ArrowLeft | ArrowRight | DiamondArrowLeft | DiamondArrowRight arrow: ArrowLeft | ArrowRight | DiamondArrowLeft | DiamondArrowRight
ArrowLeft: "<--" ArrowLeft: "<--"
ArrowRight: "-->" ArrowRight: "-->"
@ -14,7 +14,7 @@ title: string
string: """ text """ string: """ text """
styles: style* styles: "styles" "{" style* "}"
style: idref attributes? ":" style-elements style: idref attributes? ":" style-elements
style-elements: "{" style-element "}" style-elements: "{" style-element "}"
style-element: key ":" value style-element: key ":" value

View file

@ -9,7 +9,7 @@ use anyhow::anyhow;
pub fn parse_vis(contents: &str) -> anyhow::Result<Vis> { pub fn parse_vis(contents: &str) -> anyhow::Result<Vis> {
let tokens = crate::scanner::scan(contents)?; let tokens = crate::scanner::scan(contents)?;
println!("{:?}", tokens); // println!("{:?}", tokens);
let mut parser = Parser::new(tokens); let mut parser = Parser::new(tokens);
Ok(Vis { Ok(Vis {
@ -30,26 +30,26 @@ impl Parser {
fn markup(&mut self) -> anyhow::Result<Vec<Element>> { fn markup(&mut self) -> anyhow::Result<Vec<Element>> {
if self.match_token(Markup) { if self.match_token(Markup) {
self.nodes() self.elements()
} else { } else {
Ok(vec![]) Ok(vec![])
} }
} }
fn nodes(&mut self) -> anyhow::Result<Vec<Element>> { fn elements(&mut self) -> anyhow::Result<Vec<Element>> {
println!("nodes {:?}", self.peek()); // println!("nodes {:?}", self.peek());
self.consume(LeftBrace, "Expected '{'")?; self.consume(LeftBrace, "Expected '{'")?;
let mut nodes = vec![]; let mut nodes = vec![];
while !self.match_token(RightBrace) { while !self.match_token(RightBrace) {
nodes.push(self.node()?); nodes.push(self.element()?);
} }
Ok(nodes) Ok(nodes)
} }
fn node(&mut self) -> anyhow::Result<Element> { fn element(&mut self) -> anyhow::Result<Element> {
println!("node {:?}", self.peek()); // println!("node {:?}", self.peek());
let id = self.id()?; let id = self.id()?;
println!("id {}", id); // println!("id {}", id);
let current = self.peek().clone(); let current = self.peek().clone();
if self.match_tokens(vec![ if self.match_tokens(vec![
ArrowRight, ArrowRight,
@ -60,9 +60,9 @@ impl Parser {
self.edge(id, current) self.edge(id, current)
} else { } else {
let title = self.title()?; let title = self.title()?;
println!("title {:?}", title); // println!("title {:?}", title);
let children = if self.check(&LeftBrace) { let children = if self.check(&LeftBrace) {
self.nodes()? self.elements()?
} else { } else {
vec![] vec![]
}; };