From 7c67612b8a894187fa3b64725531a5459f9211bf Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Fri, 10 Aug 2018 22:33:29 +0300 Subject: organizize --- src/yellow/builder.rs | 65 --------------------------------------------------- 1 file changed, 65 deletions(-) delete mode 100644 src/yellow/builder.rs (limited to 'src/yellow/builder.rs') diff --git a/src/yellow/builder.rs b/src/yellow/builder.rs deleted file mode 100644 index 5e94e5055..000000000 --- a/src/yellow/builder.rs +++ /dev/null @@ -1,65 +0,0 @@ -use { - parser_impl::Sink, - yellow::{GreenNode, SyntaxError, SyntaxNode, SyntaxRoot}, - SyntaxKind, TextRange, TextUnit, -}; - -pub(crate) struct GreenBuilder<'a> { - text: &'a str, - parents: Vec<(SyntaxKind, usize)>, - children: Vec, - pos: TextUnit, - errors: Vec, -} - -impl<'a> Sink<'a> for GreenBuilder<'a> { - type Tree = SyntaxNode; - - fn new(text: &'a str) -> Self { - GreenBuilder { - text, - parents: Vec::new(), - children: Vec::new(), - pos: 0.into(), - errors: Vec::new(), - } - } - - fn leaf(&mut self, kind: SyntaxKind, len: TextUnit) { - let range = TextRange::offset_len(self.pos, len); - self.pos += len; - let text = &self.text[range]; - self.children.push( - GreenNode::new_leaf(kind, text) - ); - } - - fn start_internal(&mut self, kind: SyntaxKind) { - let len = self.children.len(); - self.parents.push((kind, len)); - } - - fn finish_internal(&mut self) { - let (kind, first_child) = self.parents.pop().unwrap(); - let children: Vec<_> = self.children - .drain(first_child..) - .collect(); - self.children.push( - GreenNode::new_branch(kind, children.into_boxed_slice()) - ); - } - - fn error(&mut self, message: String) { - self.errors.push(SyntaxError { - msg: message, - offset: self.pos, - }) - } - - fn finish(mut self) -> SyntaxNode { - assert_eq!(self.children.len(), 1); - let root = self.children.pop().unwrap(); - let root = SyntaxRoot::new(root, self.errors); - SyntaxNode::new_owned(root) - } -} -- cgit v1.2.3