diff options
author | Norbert Preining <norbert@preining.info> | 2021-05-23 03:00:39 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2021-05-23 03:00:39 +0000 |
commit | f1261b349e875b842745b63258c3e338cb1fe3bf (patch) | |
tree | b5d402b3e80818cde2c079a42249f3dcb9732247 /support/texlab/src/syntax/latex.rs | |
parent | 58aa1ac09b1d9e4769d0a0661cf12e2b2db41b14 (diff) |
CTAN sync 202105230300
Diffstat (limited to 'support/texlab/src/syntax/latex.rs')
-rw-r--r-- | support/texlab/src/syntax/latex.rs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/support/texlab/src/syntax/latex.rs b/support/texlab/src/syntax/latex.rs new file mode 100644 index 0000000000..7839c1795b --- /dev/null +++ b/support/texlab/src/syntax/latex.rs @@ -0,0 +1,36 @@ +mod analysis; +mod cst; +mod kind; +mod lexer; +mod parser; + +pub use self::{ + analysis::*, + 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>; |