improved some things
This commit is contained in:
parent
b3ed4b3254
commit
204467cba2
2 changed files with 13 additions and 13 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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![]
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue