syntree 0.1.2

A memory efficient syntax tree for language developers.
Documentation
syntree-0.1.2 has been yanked.

syntree

A memory efficient syntax tree.

use syntree::{Span, TreeBuilder};

#[derive(Debug, Clone, Copy)]
enum Syntax {
    Root,
    Operation,
    Number,
    Plus,
}

let mut b = TreeBuilder::new();

b.start_node(Syntax::Root);
b.start_node(Syntax::Operation);

b.start_node(Syntax::Number);
b.token(Syntax::Number, Span::new(0, 4));
b.end_node()?;

b.start_node(Syntax::Plus);
b.token(Syntax::Plus, Span::new(4, 5));
b.end_node()?;

b.start_node(Syntax::Number);
b.token(Syntax::Number, Span::new(5, 10));
b.end_node()?;

b.end_node()?;
b.end_node()?;

let tree = b.build()?;

assert_eq!(tree.span(), Some(Span::new(0, 10)));

License: MIT/Apache-2.0