提交 fa5ba17c 编写于 作者: J John Clements

parser comments

parser comments
上级 1b4ced8b
......@@ -62,12 +62,14 @@ fn parse_outer_attributes(&self) -> ~[ast::attribute] {
return attrs;
}
// matches attribute = # attribute_naked
fn parse_attribute(&self, style: ast::attr_style) -> ast::attribute {
let lo = self.span.lo;
self.expect(&token::POUND);
return self.parse_attribute_naked(style, lo);
}
// matches attribute_naked = [ meta_item ]
fn parse_attribute_naked(&self, style: ast::attr_style, lo: BytePos) ->
ast::attribute {
self.expect(&token::LBRACKET);
......@@ -86,6 +88,7 @@ fn parse_attribute_naked(&self, style: ast::attr_style, lo: BytePos) ->
// is an inner attribute of the containing item or an outer attribute of
// the first contained item until we see the semi).
// matches inner_attrs* outer_attr?
// you can make the 'next' field an Option, but the result is going to be
// more useful as a vector.
fn parse_inner_attrs_and_next(&self) ->
......@@ -134,6 +137,9 @@ fn parse_inner_attrs_and_next(&self) ->
(inner_attrs, next_outer_attrs)
}
// matches meta_item = IDENT
// | IDENT = lit
// | IDENT meta_seq
fn parse_meta_item(&self) -> @ast::meta_item {
let lo = self.span.lo;
let name = self.id_to_str(self.parse_ident());
......@@ -156,6 +162,7 @@ fn parse_meta_item(&self) -> @ast::meta_item {
}
}
// matches meta_seq = ( COMMASEP(meta_item) )
fn parse_meta_seq(&self) -> ~[@ast::meta_item] {
copy self.parse_seq(
&token::LPAREN,
......
......@@ -870,6 +870,7 @@ fn maybe_parse_fixed_vstore(&self) -> Option<@ast::expr> {
}
}
// matches token_lit = LIT_INT | ...
fn lit_from_token(&self, tok: &token::Token) -> lit_ {
match *tok {
token::LIT_INT(i, it) => lit_int(i, it),
......@@ -884,6 +885,7 @@ fn lit_from_token(&self, tok: &token::Token) -> lit_ {
}
}
// matches lit = true | false | token_lit
fn parse_lit(&self) -> lit {
let lo = self.span.lo;
let lit = if self.eat_keyword(&~"true") {
......@@ -2762,8 +2764,6 @@ fn parse_optional_onceness(&self) -> ast::Onceness {
// matches optbounds = ( ( : ( boundseq )? )? )
// where boundseq = ( bound + boundseq ) | bound
// and bound = ( 'static ) | ty
// you might want to insist on the boundseq having seen the colon, but
// that's not currently in place.
fn parse_optional_ty_param_bounds(&self) -> @OptVec<TyParamBound> {
if !self.eat(&token::COLON) {
return @opt_vec::Empty;
......@@ -3085,6 +3085,7 @@ fn parse_fn_block_decl(&self) -> fn_decl {
}
}
// matches fn_header = IDENT generics
// parse the name and optional generic types of a function header.
fn parse_fn_header(&self) -> (ident, ast::Generics) {
let id = self.parse_ident();
......@@ -3436,7 +3437,7 @@ fn parse_mod_items(&self, term: token::Token,
let attrs_remaining_len = attrs_remaining.len();
// looks like this code depends on the invariant that
// outer attributes can't occur on view items (or macros
// outer attributes can't occur on view items (or macro
// invocations?)
let mut first = true;
while *self.token != term {
......@@ -3449,9 +3450,9 @@ fn parse_mod_items(&self, term: token::Token,
attrs);
match self.parse_item_or_view_item(
/*bad*/ copy attrs,
true,
false,
true
true, // items allowed
false, // foreign items allowed
true // macros allowed
) {
iovi_item(item) => items.push(item),
iovi_view_item(view_item) => {
......@@ -3706,6 +3707,7 @@ fn parse_foreign_mod_items(&self, sort: ast::foreign_mod_sort,
}
}
// parse extern mod foo { ... } or extern { ... }
fn parse_item_foreign_mod(&self,
lo: BytePos,
opt_abis: Option<AbiSet>,
......
......@@ -8,6 +8,11 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
/*! This module contains the Rust parser. It maps source text
* to token trees and to ASTs. It contains code for expanding
* macros.
*/
#[link(name = "syntax",
vers = "0.7-pre",
uuid = "9311401b-d6ea-4cd9-a1d9-61f89499c645")];
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册