diff options
| author | John Clements <clements@racket-lang.org> | 2013-03-29 12:51:10 -0700 |
|---|---|---|
| committer | John Clements <clements@racket-lang.org> | 2013-04-28 09:51:14 -0700 |
| commit | fa5ba17c8962320963bbac1d237babffe4cdb495 (patch) | |
| tree | 7ea49792cff8275f30aec9f8fc36a44a1757b623 /src/libsyntax/parse | |
| parent | 1b4ced8bcb39ab29ba1caaea0a44e881ccbbc9e1 (diff) | |
| download | rust-fa5ba17c8962320963bbac1d237babffe4cdb495.tar.gz rust-fa5ba17c8962320963bbac1d237babffe4cdb495.zip | |
parser comments
parser comments
Diffstat (limited to 'src/libsyntax/parse')
| -rw-r--r-- | src/libsyntax/parse/attr.rs | 7 | ||||
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 14 |
2 files changed, 15 insertions, 6 deletions
diff --git a/src/libsyntax/parse/attr.rs b/src/libsyntax/parse/attr.rs index f851b9781ab..cc580155d70 100644 --- a/src/libsyntax/parse/attr.rs +++ b/src/libsyntax/parse/attr.rs @@ -62,12 +62,14 @@ impl parser_attr for Parser { 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 @@ impl parser_attr for Parser { // 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 @@ impl parser_attr for Parser { (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 @@ impl parser_attr for Parser { } } + // matches meta_seq = ( COMMASEP(meta_item) ) fn parse_meta_seq(&self) -> ~[@ast::meta_item] { copy self.parse_seq( &token::LPAREN, diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 823a7617196..156289b0c3b 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -870,6 +870,7 @@ pub impl Parser { } } + // 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 @@ pub impl Parser { } } + // 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 @@ pub impl Parser { // 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 @@ pub impl Parser { } } + // 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 @@ pub impl Parser { 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 @@ pub impl Parser { 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 @@ pub impl Parser { } } + // parse extern mod foo { ... } or extern { ... } fn parse_item_foreign_mod(&self, lo: BytePos, opt_abis: Option<AbiSet>, |
