gramatika_macro/
lib.rs

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/// Experimental
32#[doc(hidden)]
33#[proc_macro]
34pub fn regex(input: TokenStream) -> TokenStream {
35	regex::proc(input)
36}
37
38/// Experimental
39#[doc(hidden)]
40#[proc_macro]
41pub fn visitor(input: TokenStream) -> TokenStream {
42	traversal::visitor(input)
43}
44
45/// Experimental
46#[doc(hidden)]
47#[proc_macro]
48pub fn walker(input: TokenStream) -> TokenStream {
49	traversal::walker(input)
50}