@@ -30,12 +30,12 @@ use rustc::driver::{session, config};
30
30
31
31
use syntax:: ast;
32
32
use syntax:: ast:: Name ;
33
- use syntax:: parse:: token:: * ;
33
+ use syntax:: parse:: token;
34
34
use syntax:: parse:: lexer:: TokenAndSpan ;
35
35
36
36
fn parse_token_list ( file : & str ) -> HashMap < String , Token > {
37
37
fn id ( ) -> Token {
38
- IDENT ( ast:: Ident { name : Name ( 0 ) , ctxt : 0 , } , false )
38
+ token :: Ident ( ast:: Ident { name : Name ( 0 ) , ctxt : 0 , } , token :: Plain )
39
39
}
40
40
41
41
let mut res = HashMap :: new ( ) ;
@@ -52,64 +52,64 @@ fn parse_token_list(file: &str) -> HashMap<String, Token> {
52
52
let num = line. slice_from ( eq + 1 ) ;
53
53
54
54
let tok = match val {
55
- "SHR" => BINOP ( SHR ) ,
56
- "DOLLAR" => DOLLAR ,
57
- "LT" => LT ,
58
- "STAR" => BINOP ( STAR ) ,
59
- "FLOAT_SUFFIX" => id ( ) ,
60
- "INT_SUFFIX" => id ( ) ,
61
- "SHL" => BINOP ( SHL ) ,
62
- "LBRACE" => LBRACE ,
63
- "RARROW" => RARROW ,
64
- "LIT_STR" => LIT_STR ( Name ( 0 ) ) ,
65
- "DOTDOT" => DOTDOT ,
66
- "MOD_SEP" => MOD_SEP ,
67
- "DOTDOTDOT" => DOTDOTDOT ,
68
- "NOT" => NOT ,
69
- "AND" => BINOP ( AND ) ,
70
- "LPAREN" => LPAREN ,
71
- "ANDAND" => ANDAND ,
72
- "AT" => AT ,
73
- "LBRACKET" => LBRACKET ,
74
- "LIT_STR_RAW" => LIT_STR_RAW ( Name ( 0 ) , 0 ) ,
75
- "RPAREN" => RPAREN ,
76
- "SLASH" => BINOP ( SLASH ) ,
77
- "COMMA" => COMMA ,
78
- "LIFETIME" => LIFETIME ( ast:: Ident { name : Name ( 0 ) , ctxt : 0 } ) ,
79
- "CARET" => BINOP ( CARET ) ,
80
- "TILDE" => TILDE ,
81
- "IDENT" => id ( ) ,
82
- "PLUS" => BINOP ( PLUS ) ,
83
- "LIT_CHAR" => LIT_CHAR ( Name ( 0 ) ) ,
84
- "LIT_BYTE" => LIT_BYTE ( Name ( 0 ) ) ,
85
- "EQ" => EQ ,
86
- "RBRACKET" => RBRACKET ,
87
- "COMMENT" => COMMENT ,
88
- "DOC_COMMENT" => DOC_COMMENT ( Name ( 0 ) ) ,
89
- "DOT" => DOT ,
90
- "EQEQ" => EQEQ ,
91
- "NE" => NE ,
92
- "GE" => GE ,
93
- "PERCENT" => BINOP ( PERCENT ) ,
94
- "RBRACE" => RBRACE ,
95
- "BINOP" => BINOP ( PLUS ) ,
96
- "POUND" => POUND ,
97
- "OROR" => OROR ,
98
- "LIT_INTEGER" => LIT_INTEGER ( Name ( 0 ) ) ,
99
- "BINOPEQ" => BINOPEQ ( PLUS ) ,
100
- "LIT_FLOAT" => LIT_FLOAT ( Name ( 0 ) ) ,
101
- "WHITESPACE" => WS ,
102
- "UNDERSCORE" => UNDERSCORE ,
103
- "MINUS" => BINOP ( MINUS ) ,
104
- "SEMI" => SEMI ,
105
- "COLON" => COLON ,
106
- "FAT_ARROW" => FAT_ARROW ,
107
- "OR" => BINOP ( OR ) ,
108
- "GT" => GT ,
109
- "LE" => LE ,
110
- "LIT_BINARY" => LIT_BINARY ( Name ( 0 ) ) ,
111
- "LIT_BINARY_RAW" => LIT_BINARY_RAW ( Name ( 0 ) , 0 ) ,
112
- _ => continue
55
+ "SHR" => token :: BinOp ( token :: Shr ) ,
56
+ "DOLLAR" => token :: Dollar ,
57
+ "LT" => token :: Lt ,
58
+ "STAR" => token :: BinOp ( token :: Star ) ,
59
+ "FLOAT_SUFFIX" => id ( ) ,
60
+ "INT_SUFFIX" => id ( ) ,
61
+ "SHL" => token :: BinOp ( token :: Shl ) ,
62
+ "LBRACE" => token :: LBrace ,
63
+ "RARROW" => token :: Rarrow ,
64
+ "LIT_STR" => token :: LitStr ( Name ( 0 ) ) ,
65
+ "DOTDOT" => token :: DotDot ,
66
+ "MOD_SEP" => token :: ModSep ,
67
+ "DOTDOTDOT" => token :: DotDotDot ,
68
+ "NOT" => token :: Not ,
69
+ "AND" => token :: BinOp ( token :: And ) ,
70
+ "LPAREN" => token :: LParen ,
71
+ "ANDAND" => token :: AndAnd ,
72
+ "AT" => token :: At ,
73
+ "LBRACKET" => token :: LBracket ,
74
+ "LIT_STR_RAW" => token :: LitStrRaw ( Name ( 0 ) , 0 ) ,
75
+ "RPAREN" => token :: RParen ,
76
+ "SLASH" => token :: BinOp ( token :: Slash ) ,
77
+ "COMMA" => token :: Comma ,
78
+ "LIFETIME" => token :: Lifetime ( ast:: Ident { name : Name ( 0 ) , ctxt : 0 } ) ,
79
+ "CARET" => token :: BinOp ( token :: Caret ) ,
80
+ "TILDE" => token :: Tilde ,
81
+ "IDENT" => token :: Id ( ) ,
82
+ "PLUS" => token :: BinOp ( token :: Plus ) ,
83
+ "LIT_CHAR" => token :: LitChar ( Name ( 0 ) ) ,
84
+ "LIT_BYTE" => token :: LitByte ( Name ( 0 ) ) ,
85
+ "EQ" => token :: Eq ,
86
+ "RBRACKET" => token :: RBracket ,
87
+ "COMMENT" => token :: Comment ,
88
+ "DOC_COMMENT" => token :: DocComment ( Name ( 0 ) ) ,
89
+ "DOT" => token :: Dot ,
90
+ "EQEQ" => token :: EqEq ,
91
+ "NE" => token :: Ne ,
92
+ "GE" => token :: Ge ,
93
+ "PERCENT" => token :: BinOp ( token :: Percent ) ,
94
+ "RBRACE" => token :: RBrace ,
95
+ "BINOP" => token :: BinOp ( token :: Plus ) ,
96
+ "POUND" => token :: Pound ,
97
+ "OROR" => token :: OrOr ,
98
+ "LIT_INTEGER" => token :: LitInteger ( Name ( 0 ) ) ,
99
+ "BINOPEQ" => token :: BinOpEq ( token :: Plus ) ,
100
+ "LIT_FLOAT" => token :: LitFloat ( Name ( 0 ) ) ,
101
+ "WHITESPACE" => token :: Whitespace ,
102
+ "UNDERSCORE" => token :: Underscore ,
103
+ "MINUS" => token :: BinOp ( token :: Minus ) ,
104
+ "SEMI" => token :: Semi ,
105
+ "COLON" => token :: Colon ,
106
+ "FAT_ARROW" => token :: FatArrow ,
107
+ "OR" => token :: BinOp ( token :: Or ) ,
108
+ "GT" => token :: Gt ,
109
+ "LE" => token :: Le ,
110
+ "LIT_BINARY" => token :: LitBinary ( Name ( 0 ) ) ,
111
+ "LIT_BINARY_RAW" => token :: LitBinaryRaw ( Name ( 0 ) , 0 ) ,
112
+ _ => continue ,
113
113
} ;
114
114
115
115
res. insert ( num. to_string ( ) , tok) ;
@@ -119,19 +119,19 @@ fn parse_token_list(file: &str) -> HashMap<String, Token> {
119
119
res
120
120
}
121
121
122
- fn str_to_binop ( s : & str ) -> BinOp {
122
+ fn str_to_binop ( s : & str ) -> BinOpToken {
123
123
match s {
124
- "+" => PLUS ,
125
- "/" => SLASH ,
126
- "-" => MINUS ,
127
- "*" => STAR ,
128
- "%" => PERCENT ,
129
- "^" => CARET ,
130
- "&" => AND ,
131
- "|" => OR ,
132
- "<<" => SHL ,
133
- ">>" => SHR ,
134
- _ => fail ! ( "Bad binop str `{}`" , s)
124
+ "+" => token :: Plus ,
125
+ "/" => token :: Slash ,
126
+ "-" => token :: Minus ,
127
+ "*" => token :: Star ,
128
+ "%" => token :: Percent ,
129
+ "^" => token :: Caret ,
130
+ "&" => token :: And ,
131
+ "|" => token :: Or ,
132
+ "<<" => token :: Shl ,
133
+ ">>" => token :: Shr ,
134
+ _ => fail ! ( "Bad binop str `{}`" , s) ,
135
135
}
136
136
}
137
137
@@ -186,19 +186,21 @@ fn parse_antlr_token(s: &str, tokens: &HashMap<String, Token>) -> TokenAndSpan {
186
186
debug ! ( "What we got: content (`{}`), proto: {}" , content, proto_tok) ;
187
187
188
188
let real_tok = match * proto_tok {
189
- BINOP ( ..) => BINOP ( str_to_binop ( content) ) ,
190
- BINOPEQ ( ..) => BINOPEQ ( str_to_binop ( content. slice_to ( content. len ( ) - 1 ) ) ) ,
191
- LIT_STR ( ..) => LIT_STR ( fix ( content) ) ,
192
- LIT_STR_RAW ( ..) => LIT_STR_RAW ( fix ( content) , count ( content) ) ,
193
- LIT_CHAR ( ..) => LIT_CHAR ( fixchar ( content) ) ,
194
- LIT_BYTE ( ..) => LIT_BYTE ( fixchar ( content) ) ,
195
- DOC_COMMENT ( ..) => DOC_COMMENT ( nm) ,
196
- LIT_INTEGER ( ..) => LIT_INTEGER ( nm) ,
197
- LIT_FLOAT ( ..) => LIT_FLOAT ( nm) ,
198
- LIT_BINARY ( ..) => LIT_BINARY ( nm) ,
199
- LIT_BINARY_RAW ( ..) => LIT_BINARY_RAW ( fix ( content) , count ( content) ) ,
200
- IDENT ( ..) => IDENT ( ast:: Ident { name : nm, ctxt : 0 } , true ) ,
201
- LIFETIME ( ..) => LIFETIME ( ast:: Ident { name : nm, ctxt : 0 } ) ,
189
+ token:: BinOp ( ..) => token:: BinOp ( str_to_binop ( content) ) ,
190
+ token:: BinOpEq ( ..) => token:: BinOpEq ( str_to_binop ( content. slice_to (
191
+ content. len ( ) - 1 ) ) ) ,
192
+ token:: LitStr ( ..) => token:: LitStr ( fix ( content) ) ,
193
+ token:: LitStrRaw ( ..) => token:: LitStrRaw ( fix ( content) , count ( content) ) ,
194
+ token:: LitChar ( ..) => token:: LitChar ( fixchar ( content) ) ,
195
+ token:: LitByte ( ..) => token:: LitByte ( fixchar ( content) ) ,
196
+ token:: DocComment ( ..) => token:: DocComment ( nm) ,
197
+ token:: LitInteger ( ..) => token:: LitInteger ( nm) ,
198
+ token:: LitFloat ( ..) => token:: LitFloat ( nm) ,
199
+ token:: LitBinary ( ..) => token:: LitBinary ( nm) ,
200
+ token:: LitBinaryRaw ( ..) => token:: LitBinaryRaw ( fix ( content) , count ( content) ) ,
201
+ token:: Ident ( ..) => token:: Ident ( ast:: Ident { name : nm, ctxt : 0 } ,
202
+ token:: ModName ) ,
203
+ token:: Lifetime ( ..) => token:: Lifetime ( ast:: Ident { name : nm, ctxt : 0 } ) ,
202
204
ref t => t. clone ( )
203
205
} ;
204
206
@@ -222,8 +224,8 @@ fn parse_antlr_token(s: &str, tokens: &HashMap<String, Token>) -> TokenAndSpan {
222
224
223
225
fn tok_cmp ( a : & Token , b : & Token ) -> bool {
224
226
match a {
225
- & IDENT ( id, _) => match b {
226
- & IDENT ( id2, _) => id == id2,
227
+ & token :: Ident ( id, _) => match b {
228
+ & token :: Ident ( id2, _) => id == id2,
227
229
_ => false
228
230
} ,
229
231
_ => a == b
@@ -281,19 +283,20 @@ fn main() {
281
283
)
282
284
)
283
285
284
- matches ! ( LIT_BYTE ( ..) ,
285
- LIT_CHAR ( ..) ,
286
- LIT_INTEGER ( ..) ,
287
- LIT_FLOAT ( ..) ,
288
- LIT_STR ( ..) ,
289
- LIT_STR_RAW ( ..) ,
290
- LIT_BINARY ( ..) ,
291
- LIT_BINARY_RAW ( ..) ,
292
- IDENT ( ..) ,
293
- LIFETIME ( ..) ,
294
- INTERPOLATED ( ..) ,
295
- DOC_COMMENT ( ..) ,
296
- SHEBANG ( ..)
286
+ matches ! (
287
+ LitByte ( ..) ,
288
+ LitChar ( ..) ,
289
+ LitInteger ( ..) ,
290
+ LitFloat ( ..) ,
291
+ LitStr ( ..) ,
292
+ LitStrRaw ( ..) ,
293
+ LitBinary ( ..) ,
294
+ LitBinaryRaw ( ..) ,
295
+ Ident ( ..) ,
296
+ Lifetime ( ..) ,
297
+ Interpolated ( ..) ,
298
+ DocComment ( ..) ,
299
+ Shebang ( ..)
297
300
) ;
298
301
}
299
302
}
0 commit comments