cairo_lang_parser/
recovery.rs

1/// Macro that produces an inline function that gets a token kind and returns true iff it is in one
2/// of the supplied groups.
3macro_rules! is_of_kind {
4    ($($element:ident),*) => {
5        |kind: SyntaxKind| {
6            match kind{
7                $($crate::recovery::$element!() => true,)*
8                SyntaxKind::TerminalEndOfFile => true,
9                _ => false
10            }
11        }
12    };
13}
14pub(crate) use is_of_kind;
15
16macro_rules! match_arrow {
17    () => {
18        SyntaxKind::TerminalMatchArrow
19    };
20}
21pub(crate) use match_arrow;
22
23macro_rules! lbrace {
24    () => {
25        SyntaxKind::TerminalLBrace
26    };
27}
28pub(crate) use lbrace;
29
30macro_rules! rbrace {
31    () => {
32        SyntaxKind::TerminalRBrace
33    };
34}
35pub(crate) use rbrace;
36
37macro_rules! rparen {
38    () => {
39        SyntaxKind::TerminalRParen
40    };
41}
42pub(crate) use rparen;
43
44macro_rules! rbrack {
45    () => {
46        SyntaxKind::TerminalRBrack
47    };
48}
49pub(crate) use rbrack;
50
51macro_rules! rangle {
52    () => {
53        SyntaxKind::TerminalGT
54    };
55}
56pub(crate) use rangle;
57
58macro_rules! or {
59    () => {
60        SyntaxKind::TerminalOr
61    };
62}
63pub(crate) use or;
64
65macro_rules! comma {
66    () => {
67        SyntaxKind::TerminalComma
68    };
69}
70pub(crate) use comma;
71
72macro_rules! semicolon {
73    () => {
74        SyntaxKind::TerminalSemicolon
75    };
76}
77pub(crate) use semicolon;
78
79macro_rules! eq {
80    () => {
81        SyntaxKind::TerminalEq
82    };
83}
84pub(crate) use eq;
85
86macro_rules! module_item_kw {
87    () => {
88        SyntaxKind::TerminalConst
89            | SyntaxKind::TerminalEnum
90            | SyntaxKind::TerminalExtern
91            | SyntaxKind::TerminalFunction
92            | SyntaxKind::TerminalImpl
93            | SyntaxKind::TerminalModule
94            | SyntaxKind::TerminalStruct
95            | SyntaxKind::TerminalTrait
96            | SyntaxKind::TerminalType
97            | SyntaxKind::TerminalUse
98    };
99}
100pub(crate) use module_item_kw;
101
102macro_rules! block {
103    () => {
104        SyntaxKind::TerminalLet | SyntaxKind::TerminalMatch | SyntaxKind::TerminalReturn
105    };
106}
107pub(crate) use block;