1
-
2
1
import util:: interner;
3
2
import util:: interner:: interner;
4
3
import std:: map:: { hashmap, str_hash} ;
@@ -66,95 +65,91 @@ enum token {
66
65
IDENT ( str_num , bool ) ,
67
66
UNDERSCORE ,
68
67
EOF ,
69
-
70
68
}
71
69
72
70
fn binop_to_str ( o : binop ) -> str {
73
71
alt o {
74
- PLUS { ret "+"; }
75
- MINUS { ret " -"; }
76
- STAR { ret " * "; }
77
- SLASH { ret " /"; }
78
- PERCENT { ret " %"; }
79
- CARET { ret " ^"; }
80
- AND { ret " & "; }
81
- OR { ret " |"; }
82
- SHL { ret " <<"; }
83
- SHR { ret " >>"; }
72
+ PLUS { "+" }
73
+ MINUS { " -" }
74
+ STAR { " * " }
75
+ SLASH { " /" }
76
+ PERCENT { " %" }
77
+ CARET { " ^" }
78
+ AND { " & " }
79
+ OR { " |" }
80
+ SHL { " <<" }
81
+ SHR { " >>" }
84
82
}
85
83
}
86
84
87
85
fn to_str(in: interner<@str>, t: token) -> str {
88
86
alt t {
89
- EQ { ret " ="; }
90
- LT { ret " <"; }
91
- LE { ret " <="; }
92
- EQEQ { ret " =="; }
93
- NE { ret " !="; }
94
- GE { ret " >="; }
95
- GT { ret " >"; }
96
- NOT { ret " !"; }
97
- TILDE { ret " ~"; }
98
- OROR { ret "||"; }
99
- ANDAND { ret " &&"; }
100
- BINOP(op) { ret binop_to_str(op); }
101
- BINOPEQ(op) { ret binop_to_str(op) + " ="; }
87
+ EQ { " =" }
88
+ LT { " <" }
89
+ LE { " <=" }
90
+ EQEQ { " ==" }
91
+ NE { " !=" }
92
+ GE { " >=" }
93
+ GT { " >" }
94
+ NOT { " !" }
95
+ TILDE { " ~" }
96
+ OROR { "||" }
97
+ ANDAND { " &&" }
98
+ BINOP(op) { binop_to_str(op) }
99
+ BINOPEQ(op) { binop_to_str(op) + " =" }
102
100
103
101
/* Structural symbols */
104
- AT {
105
- ret " @";
106
- }
107
- DOT { ret "." ; }
108
- ELLIPSIS { ret "..." ; }
109
- COMMA { ret "," ; }
110
- SEMI { ret ";" ; }
111
- COLON { ret ": "; }
112
- MOD_SEP { ret " :: "; }
113
- RARROW { ret "->" ; }
114
- LARROW { ret "<-" ; }
115
- DARROW { ret "<->" ; }
116
- FAT_ARROW { ret "=>" ; }
117
- LPAREN { ret "(" ; }
118
- RPAREN { ret ")" ; }
119
- LBRACKET { ret "[" ; }
120
- RBRACKET { ret "]" ; }
121
- LBRACE { ret "{" ; }
122
- RBRACE { ret "}" ; }
123
- POUND { ret "#" ; }
124
- DOLLAR { ret "$" ; }
102
+ AT { " @" }
103
+ DOT { "." }
104
+ ELLIPSIS { "..." }
105
+ COMMA { " , " }
106
+ SEMI { "" }
107
+ COLON { ": " }
108
+ MOD_SEP { ":: " }
109
+ RARROW { "->" }
110
+ LARROW { "<-" }
111
+ DARROW { " <->" }
112
+ FAT_ARROW { " =>" }
113
+ LPAREN { " ( " }
114
+ RPAREN { " ) " }
115
+ LBRACKET { "[" }
116
+ RBRACKET { "] " }
117
+ LBRACE { "{ " }
118
+ RBRACE { "} " }
119
+ POUND { "#" }
120
+ DOLLAR { "$" }
125
121
126
122
/* Literals */
127
123
LIT_INT ( c, ast:: ty_char) {
128
- ret "'" + char:: escape_default ( c as char ) + "'" ;
124
+ "' " + char:: escape_default ( c as char ) + "'"
129
125
}
130
126
LIT_INT ( i, t) {
131
- ret int:: to_str ( i as int , 10 u) + ast_util:: int_ty_to_str ( t) ;
127
+ int:: to_str( i as int , 10 u) + ast_util:: int_ty_to_str ( t)
132
128
}
133
129
LIT_UINT ( u, t) {
134
- ret uint:: to_str ( u as uint , 10 u) + ast_util:: uint_ty_to_str ( t) ;
130
+ uint:: to_str( u as uint , 10 u) + ast_util:: uint_ty_to_str ( t)
135
131
}
136
132
LIT_INT_UNSUFFIXED ( i, t) {
137
- ret int:: to_str ( i as int , 10 u) + ast_util:: int_ty_to_str ( t) ;
133
+ int:: to_str( i as int , 10 u) + ast_util:: int_ty_to_str ( t)
138
134
}
139
135
LIT_FLOAT ( s, t) {
140
- ret * interner:: get ( in, s) +
141
- ast_util:: float_ty_to_str ( t) ;
136
+ * interner:: get ( in, s) +
137
+ ast_util:: float_ty_to_str ( t)
142
138
}
143
139
LIT_STR ( s) {
144
- ret "\" "
140
+ "\" "
145
141
+ str:: escape_default ( * interner:: get ( in, s) )
146
- + "\" " ;
142
+ + "\" "
147
143
}
148
144
/* Name components */
149
145
IDENT ( s, _) {
150
- ret * interner:: get ( in, s) ;
146
+ * interner:: get ( in, s)
151
147
}
152
- UNDERSCORE { ret "_" ; }
153
- EOF { ret "<eof>" ; }
148
+ UNDERSCORE { "_" }
149
+ EOF { "<eof>" }
154
150
}
155
151
}
156
152
157
-
158
153
pure fn can_begin_expr(t: token) -> bool {
159
154
alt t {
160
155
LPAREN { true }
@@ -179,28 +174,27 @@ pure fn can_begin_expr(t: token) -> bool {
179
174
}
180
175
}
181
176
182
- fn is_lit ( t : token:: token ) -> bool {
183
- ret alt t {
184
- token : : LIT_INT ( _, _) { true }
185
- token :: LIT_UINT ( _, _) { true }
186
- token :: LIT_INT_UNSUFFIXED ( _, _) { true }
187
- token :: LIT_FLOAT ( _, _) { true }
188
- token :: LIT_STR ( _) { true }
189
- _ { false }
190
- }
177
+ fn is_lit(t: token) -> bool {
178
+ alt t {
179
+ LIT_INT(_, _) { true }
180
+ LIT_UINT(_, _) { true }
181
+ LIT_INT_UNSUFFIXED(_, _) { true }
182
+ LIT_FLOAT(_, _) { true }
183
+ LIT_STR(_) { true }
184
+ _ { false }
185
+ }
191
186
}
192
187
193
- pure fn is_ident ( t : token:: token ) -> bool {
194
- alt t { token : : IDENT ( _, _) { ret true ; } _ { } }
195
- ret false ;
188
+ pure fn is_ident(t: token) -> bool {
189
+ alt t { IDENT(_, _) { true } _ { false } }
196
190
}
197
191
198
- pure fn is_plain_ident ( t : token:: token ) -> bool {
199
- ret alt t { token : : IDENT ( _, false ) { true } _ { false } } ;
192
+ pure fn is_plain_ident(t: token) -> bool {
193
+ alt t { IDENT(_, false) { true } _ { false } }
200
194
}
201
195
202
- pure fn is_bar ( t : token:: token ) -> bool {
203
- alt t { token : : BINOP ( token :: OR ) | token :: OROR { true } _ { false } }
196
+ pure fn is_bar(t: token) -> bool {
197
+ alt t { BINOP(OR) | OROR { true } _ { false } }
204
198
}
205
199
206
200
#[doc = "
@@ -219,7 +213,7 @@ fn keyword_table() -> hashmap<str, ()> {
219
213
for restricted_keyword_table().each_key {|word|
220
214
keywords.insert(word, ());
221
215
}
222
- ret keywords;
216
+ keywords
223
217
}
224
218
225
219
#[doc = " Keywords that may be used as identifiers"]
0 commit comments