diff options
Diffstat (limited to 'support/texlab/src/syntax/bibtex.rs')
-rw-r--r-- | support/texlab/src/syntax/bibtex.rs | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/support/texlab/src/syntax/bibtex.rs b/support/texlab/src/syntax/bibtex.rs new file mode 100644 index 0000000000..c6e8bb3760 --- /dev/null +++ b/support/texlab/src/syntax/bibtex.rs @@ -0,0 +1,34 @@ +mod cst; +mod kind; +mod lexer; +mod parser; + +pub use self::{ + cst::*, + kind::SyntaxKind::{self, *}, + parser::{parse, Parse}, +}; + +#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum Language {} + +impl cstree::Language for Language { + type Kind = SyntaxKind; + + fn kind_from_raw(raw: cstree::SyntaxKind) -> Self::Kind { + assert!(raw.0 <= ROOT as u16); + unsafe { std::mem::transmute::<u16, SyntaxKind>(raw.0) } + } + + fn kind_to_raw(kind: Self::Kind) -> cstree::SyntaxKind { + kind.into() + } +} + +pub type SyntaxNode = cstree::ResolvedNode<Language>; + +pub type SyntaxToken = cstree::ResolvedToken<Language>; + +pub type SyntaxElement = cstree::ResolvedElement<Language>; + +pub type SyntaxElementRef<'a> = cstree::ResolvedElementRef<'a, Language>; |