1use proc_macro::TokenStream;
2
3mod common;
4mod debug_lisp;
5mod lexer;
6mod regex;
7mod token;
8mod traversal;
9
10#[proc_macro_derive(Token, attributes(pattern, subset_of, discard, multiline))]
11pub fn derive_token(input: TokenStream) -> TokenStream {
12 token::derive(input)
13}
14
15#[proc_macro_derive(Lexer)]
16#[deprecated(since = "0.6.0", note = "Use `gramatika::TokenStream<T>` instead")]
17pub fn derive_lexer(input: TokenStream) -> TokenStream {
18 lexer::derive(input)
19}
20
21#[proc_macro_derive(DebugLisp)]
22pub fn derive_debug_lisp(input: TokenStream) -> TokenStream {
23 debug_lisp::derive(input)
24}
25
26#[proc_macro_derive(DebugLispToken)]
27pub fn derive_debug_lisp_token(input: TokenStream) -> TokenStream {
28 debug_lisp::derive_token(input)
29}
30
31#[doc(hidden)]
33#[proc_macro]
34pub fn regex(input: TokenStream) -> TokenStream {
35 regex::proc(input)
36}
37
38#[doc(hidden)]
40#[proc_macro]
41pub fn visitor(input: TokenStream) -> TokenStream {
42 traversal::visitor(input)
43}
44
45#[doc(hidden)]
47#[proc_macro]
48pub fn walker(input: TokenStream) -> TokenStream {
49 traversal::walker(input)
50}