@@ -30,12 +30,12 @@ use rustc::driver::{session, config};
3030
3131use syntax:: ast;
3232use syntax:: ast:: Name ;
33- use syntax:: parse:: token:: * ;
33+ use syntax:: parse:: token;
3434use syntax:: parse:: lexer:: TokenAndSpan ;
3535
3636fn parse_token_list ( file : & str ) -> HashMap < String , Token > {
3737 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 )
3939 }
4040
4141 let mut res = HashMap :: new ( ) ;
@@ -52,64 +52,64 @@ fn parse_token_list(file: &str) -> HashMap<String, Token> {
5252 let num = line. slice_from ( eq + 1 ) ;
5353
5454 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 ,
113113 } ;
114114
115115 res. insert ( num. to_string ( ) , tok) ;
@@ -119,19 +119,19 @@ fn parse_token_list(file: &str) -> HashMap<String, Token> {
119119 res
120120}
121121
122- fn str_to_binop ( s : & str ) -> BinOp {
122+ fn str_to_binop ( s : & str ) -> BinOpToken {
123123 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) ,
135135 }
136136}
137137
@@ -186,19 +186,21 @@ fn parse_antlr_token(s: &str, tokens: &HashMap<String, Token>) -> TokenAndSpan {
186186 debug ! ( "What we got: content (`{}`), proto: {}" , content, proto_tok) ;
187187
188188 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 } ) ,
202204 ref t => t. clone ( )
203205 } ;
204206
@@ -222,8 +224,8 @@ fn parse_antlr_token(s: &str, tokens: &HashMap<String, Token>) -> TokenAndSpan {
222224
223225fn tok_cmp ( a : & Token , b : & Token ) -> bool {
224226 match a {
225- & IDENT ( id, _) => match b {
226- & IDENT ( id2, _) => id == id2,
227+ & token :: Ident ( id, _) => match b {
228+ & token :: Ident ( id2, _) => id == id2,
227229 _ => false
228230 } ,
229231 _ => a == b
@@ -281,19 +283,20 @@ fn main() {
281283 )
282284 )
283285
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 ( ..)
297300 ) ;
298301 }
299302}
0 commit comments