diff options
| author | Graydon Hoare <[email protected]> | 2011-03-02 13:50:42 -0800 |
|---|---|---|
| committer | Graydon Hoare <[email protected]> | 2011-03-02 13:50:42 -0800 |
| commit | 9e4943c9229e15fa11069eeb2b20060994f9ac0f (patch) | |
| tree | ecd8c204e4026e865ab3576e3b87bd334aa00a3d /src/comp/front/parser.rs | |
| parent | Comment-out TRACK_ALLOCATIONS again. Leave a note about it. (diff) | |
| download | rust-9e4943c9229e15fa11069eeb2b20060994f9ac0f.tar.xz rust-9e4943c9229e15fa11069eeb2b20060994f9ac0f.zip | |
Parse, add to AST, and otherwise ignore 'export' view items. Need to add support to resolve.
Diffstat (limited to 'src/comp/front/parser.rs')
| -rw-r--r-- | src/comp/front/parser.rs | 39 |
1 files changed, 28 insertions, 11 deletions
diff --git a/src/comp/front/parser.rs b/src/comp/front/parser.rs index 50545a2f..1be4226c 100644 --- a/src/comp/front/parser.rs +++ b/src/comp/front/parser.rs @@ -2187,7 +2187,16 @@ impure fn parse_import(parser p) -> @ast.view_item { fail; } -impure fn parse_use_or_import(parser p) -> @ast.view_item { +impure fn parse_export(parser p) -> @ast.view_item { + auto lo = p.get_span(); + expect(p, token.EXPORT); + auto id = parse_ident(p); + auto hi = p.get_span(); + expect(p, token.SEMI); + ret @spanned(lo, hi, ast.view_item_export(id)); +} + +impure fn parse_view_item(parser p) -> @ast.view_item { alt (p.peek()) { case (token.USE) { ret parse_use(p); @@ -2195,23 +2204,26 @@ impure fn parse_use_or_import(parser p) -> @ast.view_item { case (token.IMPORT) { ret parse_import(p); } + case (token.EXPORT) { + ret parse_export(p); + } } } -fn is_use_or_import(token.token t) -> bool { - if (t == token.USE) { - ret true; - } - if (t == token.IMPORT) { - ret true; +fn is_view_item(token.token t) -> bool { + alt (t) { + case (token.USE) { ret true; } + case (token.IMPORT) { ret true; } + case (token.EXPORT) { ret true; } + case (_) {} } ret false; } impure fn parse_view(parser p, ast.mod_index index) -> vec[@ast.view_item] { let vec[@ast.view_item] items = vec(); - while (is_use_or_import(p.peek())) { - auto item = parse_use_or_import(p); + while (is_view_item(p.peek())) { + auto item = parse_view_item(p); items += vec(item); ast.index_view_item(index, item); @@ -2305,12 +2317,17 @@ impure fn parse_crate_directive(parser p) -> ast.crate_directive } case (token.USE) { - auto vi = parse_use_or_import(p); + auto vi = parse_view_item(p); ret spanned(lo, vi.span, ast.cdir_view_item(vi)); } case (token.IMPORT) { - auto vi = parse_use_or_import(p); + auto vi = parse_view_item(p); + ret spanned(lo, vi.span, ast.cdir_view_item(vi)); + } + + case (token.EXPORT) { + auto vi = parse_view_item(p); ret spanned(lo, vi.span, ast.cdir_view_item(vi)); } |