3
3
/// interface, although it contains some code to bridge `SyntaxNode`s and
4
4
/// `TokenTree`s as well!
5
5
6
- macro_rules! impl_froms {
7
- ( $e: ident: $( $v: ident) , * ) => {
8
- $(
9
- impl From <$v> for $e {
10
- fn from( it: $v) -> $e {
11
- $e:: $v( it)
12
- }
13
- }
14
- ) *
15
- }
16
- }
17
-
6
+ mod parser;
18
7
mod mbe_parser;
19
8
mod mbe_expander;
20
9
mod syntax_bridge;
21
- mod tt_cursor ;
10
+ mod tt_iter ;
22
11
mod subtree_source;
23
- mod subtree_parser;
24
12
25
- use ra_syntax:: SmolStr ;
26
13
use smallvec:: SmallVec ;
27
14
28
15
pub use tt:: { Delimiter , Punct } ;
@@ -38,6 +25,7 @@ pub enum ExpandError {
38
25
UnexpectedToken ,
39
26
BindingError ( String ) ,
40
27
ConversionError ,
28
+ InvalidRepeat ,
41
29
}
42
30
43
31
pub use crate :: syntax_bridge:: {
@@ -65,31 +53,8 @@ impl MacroRules {
65
53
66
54
#[ derive( Clone , Debug , PartialEq , Eq ) ]
67
55
pub ( crate ) struct Rule {
68
- pub ( crate ) lhs : Subtree ,
69
- pub ( crate ) rhs : Subtree ,
70
- }
71
-
72
- #[ derive( Clone , Debug , PartialEq , Eq ) ]
73
- pub ( crate ) enum TokenTree {
74
- Leaf ( Leaf ) ,
75
- Subtree ( Subtree ) ,
76
- Repeat ( Repeat ) ,
77
- }
78
- impl_froms ! ( TokenTree : Leaf , Subtree , Repeat ) ;
79
-
80
- #[ derive( Clone , Debug , PartialEq , Eq ) ]
81
- pub ( crate ) enum Leaf {
82
- Literal ( Literal ) ,
83
- Punct ( Punct ) ,
84
- Ident ( Ident ) ,
85
- Var ( Var ) ,
86
- }
87
- impl_froms ! ( Leaf : Literal , Punct , Ident , Var ) ;
88
-
89
- #[ derive( Clone , Debug , PartialEq , Eq ) ]
90
- pub ( crate ) struct Subtree {
91
- pub ( crate ) delimiter : Delimiter ,
92
- pub ( crate ) token_trees : Vec < TokenTree > ,
56
+ pub ( crate ) lhs : tt:: Subtree ,
57
+ pub ( crate ) rhs : tt:: Subtree ,
93
58
}
94
59
95
60
#[ derive( Clone , Debug , Eq ) ]
@@ -117,35 +82,5 @@ impl PartialEq for crate::Separator {
117
82
}
118
83
}
119
84
120
- #[ derive( Clone , Debug , PartialEq , Eq ) ]
121
- pub ( crate ) struct Repeat {
122
- pub ( crate ) subtree : Subtree ,
123
- pub ( crate ) kind : RepeatKind ,
124
- pub ( crate ) separator : Option < Separator > ,
125
- }
126
-
127
- #[ derive( Clone , Debug , PartialEq , Eq ) ]
128
- pub ( crate ) enum RepeatKind {
129
- ZeroOrMore ,
130
- OneOrMore ,
131
- ZeroOrOne ,
132
- }
133
-
134
- #[ derive( Clone , Debug , PartialEq , Eq ) ]
135
- pub ( crate ) struct Literal {
136
- pub ( crate ) text : SmolStr ,
137
- }
138
-
139
- #[ derive( Clone , Debug , PartialEq , Eq ) ]
140
- pub ( crate ) struct Ident {
141
- pub ( crate ) text : SmolStr ,
142
- }
143
-
144
- #[ derive( Clone , Debug , PartialEq , Eq ) ]
145
- pub ( crate ) struct Var {
146
- pub ( crate ) text : SmolStr ,
147
- pub ( crate ) kind : Option < SmolStr > ,
148
- }
149
-
150
85
#[ cfg( test) ]
151
86
mod tests;
0 commit comments