syntree

github crates.io docs.rs build status

A memory efficient syntax tree.

```rust use syntree::{Span, TreeBuilder};

[derive(Debug, Clone, Copy)]

enum Syntax { Root, Operation, Number, Plus, }

let mut b = TreeBuilder::new();

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

b.startnode(Syntax::Number); b.token(Syntax::Number, Span::new(0, 4)); b.endnode()?;

b.startnode(Syntax::Plus); b.token(Syntax::Plus, Span::new(4, 5)); b.endnode()?;

b.startnode(Syntax::Number); b.token(Syntax::Number, Span::new(5, 10)); b.endnode()?;

b.endnode()?; b.endnode()?;

let tree = b.build()?;

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

License: MIT/Apache-2.0