From 2c514f33f2ebba03ca06368b3405ce0d7cc93c54 Mon Sep 17 00:00:00 2001 From: Graydon Hoare Date: Thu, 23 Sep 2010 13:15:51 -0700 Subject: More fleshing-out on rustc.me.trans. Emitting modules and fns corresponding to parsed input now. --- src/comp/fe/parser.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/comp/fe') diff --git a/src/comp/fe/parser.rs b/src/comp/fe/parser.rs index 248d60f4..ab2e15e3 100644 --- a/src/comp/fe/parser.rs +++ b/src/comp/fe/parser.rs @@ -218,11 +218,27 @@ state fn parse_fn(parser p) -> tup(ast.ident, ast.item) { ret tup(id, ast.item_fn(@f)); } +state fn parse_mod(parser p) -> tup(ast.ident, ast.item) { + expect(p, token.MOD); + auto id = parse_ident(p); + expect(p, token.LBRACE); + let ast._mod m = new_str_hash[ast.item](); + while (p.peek() != token.RBRACE) { + auto i = parse_item(p); + m.insert(i._0, i._1); + } + expect(p, token.RBRACE); + ret tup(id, ast.item_mod(@m)); +} + state fn parse_item(parser p) -> tup(ast.ident, ast.item) { alt (p.peek()) { case (token.FN) { ret parse_fn(p); } + case (token.MOD) { + ret parse_mod(p); + } } p.err("expectied item"); fail; -- cgit v1.2.3