summaryrefslogtreecommitdiff
path: root/support/texlab/src/syntax/latex.rs
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-05-23 03:00:39 +0000
committerNorbert Preining <norbert@preining.info>2021-05-23 03:00:39 +0000
commitf1261b349e875b842745b63258c3e338cb1fe3bf (patch)
treeb5d402b3e80818cde2c079a42249f3dcb9732247 /support/texlab/src/syntax/latex.rs
parent58aa1ac09b1d9e4769d0a0661cf12e2b2db41b14 (diff)
CTAN sync 202105230300
Diffstat (limited to 'support/texlab/src/syntax/latex.rs')
-rw-r--r--support/texlab/src/syntax/latex.rs36
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>;