@@ -81,78 +81,116 @@ pub fn new_parse_sess_special_handler(sh: span_handler, cm: @codemap::CodeMap)
81
81
82
82
// this appears to be the main entry point for rust parsing by
83
83
// rustc and crate:
84
- pub fn parse_crate_from_file ( input : & Path , cfg : ast:: crate_cfg ,
85
- sess : @mut ParseSess ) -> @ast:: crate {
86
- let p = new_parser_from_file ( sess, cfg, input) ;
87
- p. parse_crate_mod ( cfg)
84
+ pub fn parse_crate_from_file (
85
+ input : & Path ,
86
+ cfg : ast:: crate_cfg ,
87
+ sess : @mut ParseSess
88
+ ) -> @ast:: crate {
89
+ let p = new_parser_from_file ( sess, /*bad*/ copy cfg, input) ;
90
+ p. parse_crate_mod ( /*bad*/ copy cfg)
88
91
// why is there no p.abort_if_errors here?
89
92
}
90
93
91
- pub fn parse_crate_from_source_str ( name : ~str ,
92
- source : @~str ,
93
- cfg : ast:: crate_cfg ,
94
- sess : @mut ParseSess ) -> @ast:: crate {
95
- let p = new_parser_from_source_str ( sess, cfg, /*bad*/ copy name,
96
- codemap:: FssNone , source) ;
97
- let r = p. parse_crate_mod ( cfg) ;
94
+ pub fn parse_crate_from_source_str (
95
+ name : ~str ,
96
+ source : @~str ,
97
+ cfg : ast:: crate_cfg ,
98
+ sess : @mut ParseSess
99
+ ) -> @ast:: crate {
100
+ let p = new_parser_from_source_str (
101
+ sess,
102
+ /*bad*/ copy cfg,
103
+ /*bad*/ copy name,
104
+ codemap:: FssNone ,
105
+ source
106
+ ) ;
107
+ let r = p. parse_crate_mod ( /*bad*/ copy cfg) ;
98
108
p. abort_if_errors ( ) ;
99
- return r ;
109
+ r
100
110
}
101
111
102
- pub fn parse_expr_from_source_str ( name : ~str ,
103
- source : @~str ,
104
- cfg : ast:: crate_cfg ,
105
- sess : @mut ParseSess ) -> @ast:: expr {
106
- let p = new_parser_from_source_str ( sess, cfg, /*bad*/ copy name,
107
- codemap:: FssNone , source) ;
112
+ pub fn parse_expr_from_source_str (
113
+ name : ~str ,
114
+ source : @~str ,
115
+ +cfg : ast:: crate_cfg ,
116
+ sess : @mut ParseSess
117
+ ) -> @ast:: expr {
118
+ let p = new_parser_from_source_str (
119
+ sess,
120
+ cfg,
121
+ /*bad*/ copy name,
122
+ codemap:: FssNone ,
123
+ source
124
+ ) ;
108
125
let r = p. parse_expr ( ) ;
109
126
p. abort_if_errors ( ) ;
110
- return r ;
127
+ r
111
128
}
112
129
113
- pub fn parse_item_from_source_str ( name : ~str ,
114
- source : @~str ,
115
- cfg : ast:: crate_cfg ,
116
- +attrs : ~[ ast:: attribute ] ,
117
- sess : @mut ParseSess )
118
- -> Option < @ast:: item > {
119
- let p = new_parser_from_source_str ( sess, cfg, /*bad*/ copy name,
120
- codemap:: FssNone , source) ;
130
+ pub fn parse_item_from_source_str (
131
+ name : ~str ,
132
+ source : @~str ,
133
+ +cfg : ast:: crate_cfg ,
134
+ +attrs : ~[ ast:: attribute ] ,
135
+ sess : @mut ParseSess
136
+ ) -> Option < @ast:: item > {
137
+ let p = new_parser_from_source_str (
138
+ sess,
139
+ cfg,
140
+ /*bad*/ copy name,
141
+ codemap:: FssNone ,
142
+ source
143
+ ) ;
121
144
let r = p. parse_item ( attrs) ;
122
145
p. abort_if_errors ( ) ;
123
- return r ;
146
+ r
124
147
}
125
148
126
- pub fn parse_stmt_from_source_str ( name : ~str ,
127
- source : @~str ,
128
- cfg : ast:: crate_cfg ,
129
- +attrs : ~[ ast:: attribute ] ,
130
- sess : @mut ParseSess ) -> @ast:: stmt {
131
- let p = new_parser_from_source_str ( sess, cfg, /*bad*/ copy name,
132
- codemap:: FssNone , source) ;
149
+ pub fn parse_stmt_from_source_str (
150
+ name : ~str ,
151
+ source : @~str ,
152
+ +cfg : ast:: crate_cfg ,
153
+ +attrs : ~[ ast:: attribute ] ,
154
+ sess : @mut ParseSess
155
+ ) -> @ast:: stmt {
156
+ let p = new_parser_from_source_str (
157
+ sess,
158
+ cfg,
159
+ /*bad*/ copy name,
160
+ codemap:: FssNone ,
161
+ source
162
+ ) ;
133
163
let r = p. parse_stmt ( attrs) ;
134
164
p. abort_if_errors ( ) ;
135
- return r ;
165
+ r
136
166
}
137
167
138
- pub fn parse_tts_from_source_str ( name : ~str ,
139
- source : @~str ,
140
- cfg : ast:: crate_cfg ,
141
- sess : @mut ParseSess ) -> ~[ ast:: token_tree ] {
142
- let p = new_parser_from_source_str ( sess, cfg, /*bad*/ copy name,
143
- codemap:: FssNone , source) ;
168
+ pub fn parse_tts_from_source_str (
169
+ name : ~str ,
170
+ source : @~str ,
171
+ +cfg : ast:: crate_cfg ,
172
+ sess : @mut ParseSess
173
+ ) -> ~[ ast:: token_tree ] {
174
+ let p = new_parser_from_source_str (
175
+ sess,
176
+ cfg,
177
+ /*bad*/ copy name,
178
+ codemap:: FssNone ,
179
+ source
180
+ ) ;
144
181
* p. quote_depth += 1 u;
145
182
let r = p. parse_all_token_trees ( ) ;
146
183
p. abort_if_errors ( ) ;
147
- return r ;
184
+ r
148
185
}
149
186
150
- pub fn parse_from_source_str < T > ( f : fn ( p : Parser ) -> T ,
151
- name : ~str , ss : codemap:: FileSubstr ,
152
- source : @~str , cfg : ast:: crate_cfg ,
153
- sess : @mut ParseSess )
154
- -> T
155
- {
187
+ pub fn parse_from_source_str < T > (
188
+ f : fn ( Parser ) -> T ,
189
+ name : ~str , ss : codemap:: FileSubstr ,
190
+ source : @~str ,
191
+ +cfg : ast:: crate_cfg ,
192
+ sess : @mut ParseSess
193
+ ) -> T {
156
194
let p = new_parser_from_source_str (
157
195
sess,
158
196
cfg,
@@ -176,40 +214,51 @@ pub fn next_node_id(sess: @mut ParseSess) -> node_id {
176
214
return rv;
177
215
}
178
216
179
- pub fn new_parser_from_source_str ( sess : @mut ParseSess , cfg : ast:: crate_cfg ,
180
- +name : ~str , +ss : codemap:: FileSubstr ,
181
- source : @~str ) -> Parser {
217
+ pub fn new_parser_from_source_str (
218
+ sess : @mut ParseSess ,
219
+ +cfg : ast:: crate_cfg ,
220
+ +name : ~str ,
221
+ +ss : codemap:: FileSubstr ,
222
+ source : @~str
223
+ ) -> Parser {
182
224
let filemap = sess. cm . new_filemap_w_substr ( name, ss, source) ;
183
- let srdr = lexer:: new_string_reader ( copy sess. span_diagnostic ,
184
- filemap,
185
- sess. interner ) ;
186
- return Parser ( sess, cfg, srdr as reader ) ;
225
+ let srdr = lexer:: new_string_reader (
226
+ copy sess. span_diagnostic ,
227
+ filemap,
228
+ sess. interner
229
+ ) ;
230
+ Parser ( sess, cfg, srdr as reader )
187
231
}
188
232
189
233
// Read the entire source file, return a parser
190
234
// that draws from that string
191
- pub fn new_parser_result_from_file ( sess : @mut ParseSess ,
192
- cfg : ast:: crate_cfg ,
193
- path : & Path )
194
- -> Result < Parser , ~str > {
235
+ pub fn new_parser_result_from_file (
236
+ sess : @mut ParseSess ,
237
+ +cfg : ast:: crate_cfg ,
238
+ path : & Path
239
+ ) -> Result < Parser , ~str > {
195
240
match io:: read_whole_file_str ( path) {
196
- result:: Ok ( src) => {
197
-
198
- let filemap = sess. cm . new_filemap ( path. to_str ( ) , @src) ;
199
- let srdr = lexer:: new_string_reader ( copy sess. span_diagnostic ,
200
- filemap,
201
- sess. interner ) ;
202
- Ok ( Parser ( sess, cfg, srdr as reader ) )
241
+ Ok ( src) => {
242
+ let filemap = sess. cm . new_filemap ( path. to_str ( ) , @src) ;
243
+ let srdr = lexer:: new_string_reader (
244
+ copy sess. span_diagnostic ,
245
+ filemap,
246
+ sess. interner
247
+ ) ;
248
+ Ok ( Parser ( sess, cfg, srdr as reader ) )
203
249
204
- }
205
- result :: Err ( e) => Err ( e)
250
+ }
251
+ Err ( e) => Err ( e)
206
252
}
207
253
}
208
254
209
255
/// Create a new parser for an entire crate, handling errors as appropriate
210
256
/// if the file doesn't exist
211
- pub fn new_parser_from_file ( sess : @mut ParseSess , cfg : ast:: crate_cfg ,
212
- path : & Path ) -> Parser {
257
+ pub fn new_parser_from_file (
258
+ sess : @mut ParseSess ,
259
+ +cfg : ast:: crate_cfg ,
260
+ path : & Path
261
+ ) -> Parser {
213
262
match new_parser_result_from_file ( sess, cfg, path) {
214
263
Ok ( parser) => parser,
215
264
Err ( e) => {
@@ -220,8 +269,12 @@ pub fn new_parser_from_file(sess: @mut ParseSess, cfg: ast::crate_cfg,
220
269
221
270
/// Create a new parser based on a span from an existing parser. Handles
222
271
/// error messages correctly when the file does not exist.
223
- pub fn new_sub_parser_from_file ( sess : @mut ParseSess , cfg : ast:: crate_cfg ,
224
- path : & Path , sp : span ) -> Parser {
272
+ pub fn new_sub_parser_from_file (
273
+ sess : @mut ParseSess ,
274
+ +cfg : ast:: crate_cfg ,
275
+ path : & Path ,
276
+ sp : span
277
+ ) -> Parser {
225
278
match new_parser_result_from_file ( sess, cfg, path) {
226
279
Ok ( parser) => parser,
227
280
Err ( e) => {
@@ -230,11 +283,18 @@ pub fn new_sub_parser_from_file(sess: @mut ParseSess, cfg: ast::crate_cfg,
230
283
}
231
284
}
232
285
233
- pub fn new_parser_from_tts ( sess : @mut ParseSess , cfg : ast:: crate_cfg ,
234
- +tts : ~[ ast:: token_tree ] ) -> Parser {
235
- let trdr = lexer:: new_tt_reader ( copy sess. span_diagnostic , sess. interner ,
236
- None , tts) ;
237
- return Parser ( sess, cfg, trdr as reader )
286
+ pub fn new_parser_from_tts (
287
+ sess : @mut ParseSess ,
288
+ +cfg : ast:: crate_cfg ,
289
+ +tts : ~[ ast:: token_tree ]
290
+ ) -> Parser {
291
+ let trdr = lexer:: new_tt_reader (
292
+ copy sess. span_diagnostic ,
293
+ sess. interner ,
294
+ None ,
295
+ tts
296
+ ) ;
297
+ Parser ( sess, cfg, trdr as reader )
238
298
}
239
299
240
300
0 commit comments