1#![doc = include_str!("../README.md")]
2#![warn(missing_docs)]
3#![warn(clippy::missing_errors_doc, clippy::missing_panics_doc)]
4
5extern crate self as m2_syn;
6
7#[macro_use]
14#[path = "schema/macros.rs"]
15mod macros;
16
17#[path = "parser/body.rs"]
18mod body;
19#[path = "lex/cell_stream.rs"]
20mod cell_stream;
21#[path = "cst/cst.rs"]
22mod cst;
23#[path = "parser/delimited.rs"]
24mod delimited;
25#[path = "lex/lexer.rs"]
26pub mod lexer;
27#[path = "parser/native.rs"]
28pub mod native;
29#[path = "schema/nodes.rs"]
31pub mod nodes;
32#[path = "parser/parse.rs"]
33pub mod parse;
34mod parsed_file;
35#[cfg(feature = "pretty")]
36pub mod pretty;
37#[path = "parser/punctuated.rs"]
38pub mod punctuated;
39#[path = "parser/realtime.rs"]
40mod realtime;
41mod recovery;
42mod span;
43#[path = "lex/token_stream.rs"]
44mod token_stream;
45
46#[cfg(feature = "tree-sitter")]
47#[path = "cst/treesitter.rs"]
48pub mod treesitter;
49
50#[cfg(feature = "tree-sitter")]
51pub use treesitter::{
52 ParseError, RealtimeParser, TreeSitterParser, parse_file, parse_file_recovering, parse_tokens,
53};
54
55pub use parse::{
56 FragmentParseError, Parse, ParseStream, Parser, TokenParseError, migrate, parse_fragment_str,
57 parse_with, parse2,
58};
59
60pub use body::{Body, Terminated};
61pub use cell_stream::{CellStream, CellStreamError, Tokenize};
62pub use cst::{
63 CSTNodeClassLabel, ChildCursor, ExternalCstChild, ExternalCstNode, Migrate, MigrateError, Token,
64};
65pub use delimited::Delimited;
66#[doc(hidden)]
67pub use lexer::{__qualified_identifier_spans, __quote_fragment};
68pub use lexer::{LexError, LexErrorKind, lex, lex_recovering, lex_str, lex_str_recovering};
69#[cfg(not(any(feature = "pretty", feature = "walk")))]
70#[doc(hidden)]
71pub use m2_syn_macros::syntax as __m2_syn_syntax;
72#[cfg(all(feature = "pretty", not(feature = "walk")))]
73#[doc(hidden)]
74pub use m2_syn_macros::syntax_pretty as __m2_syn_syntax;
75#[cfg(all(feature = "pretty", feature = "walk"))]
76#[doc(hidden)]
77pub use m2_syn_macros::syntax_pretty_walk as __m2_syn_syntax;
78#[cfg(all(not(feature = "pretty"), feature = "walk"))]
79#[doc(hidden)]
80pub use m2_syn_macros::syntax_walk as __m2_syn_syntax;
81#[doc(hidden)]
82pub use m2_syn_macros::token as __m2_syn_token;
83pub use m2_syn_macros::{Spanned, parse_quote_m2, quote_m2};
84pub use native::{
85 CompletedNativeCell, NativeCellParser, NativeCellState, NativeParseError, NativeParser,
86 parse_native, parse_native_recovering,
87};
88pub(crate) use nodes::*;
89#[cfg(feature = "walk")]
90pub use nodes::{fold, visit, visit_mut};
91pub use parsed_file::ParsedFile;
92#[cfg(feature = "pretty")]
93pub use pretty::{
94 PrettyDetail, PrettyDetailRole, PrettyEdge, PrettyNode, PrettyNodeRole, PrettyOptions,
95 PrettyReport, PrettyTree, format_pretty_tokens, format_pretty_tree,
96};
97pub use punctuated::{PunctPair, Punctuated};
98pub use realtime::{
99 NativeCellBoundary, NativeRealtimeCell, NativeRealtimeEditError, NativeRealtimeParser,
100};
101pub use recovery::Recovered;
102pub use span::{
103 File, LineColumn, LineColumnRange, Offset, Source, SourceId, Span, Spanned, TextEdit,
104};
105#[doc(hidden)]
106pub use token_stream::delim::parse_delimiter;
107pub use token_stream::delim::{
108 Delimiter, DelimiterKind, DelimiterToken, DelimiterValue, DoubleSpan,
109};
110pub use token_stream::{
111 CommentTrivia, IdentToken, LeadingTrivia, Lex, LiteralKind, LiteralToken, Punct, Terminal,
112 TokenGroup, TokenStream, TokenTree, TrailingTrivia, Trivia, TriviaKind,
113};