diff options
| author | Graydon Hoare <[email protected]> | 2010-09-20 23:56:43 -0700 |
|---|---|---|
| committer | Graydon Hoare <[email protected]> | 2010-09-20 23:56:43 -0700 |
| commit | c5f4789d5b75d3098665b17d318144cb7c54f42a (patch) | |
| tree | 2d0ef3ef0e85aa7f2453d8bae762c89552a99ed9 /src/comp | |
| parent | Wrap long lines. (diff) | |
| download | rust-c5f4789d5b75d3098665b17d318144cb7c54f42a.tar.xz rust-c5f4789d5b75d3098665b17d318144cb7c54f42a.zip | |
Bind pattern slots with ?, drop parens from 0-ary tag constructors, translate 0-ary constructors as constants. Rustc loses ~300kb.
Diffstat (limited to 'src/comp')
| -rw-r--r-- | src/comp/fe/ast.rs | 14 | ||||
| -rw-r--r-- | src/comp/fe/lexer.rs | 220 | ||||
| -rw-r--r-- | src/comp/fe/parser.rs | 6 | ||||
| -rw-r--r-- | src/comp/fe/token.rs | 418 | ||||
| -rw-r--r-- | src/comp/util/common.rs | 48 |
5 files changed, 353 insertions, 353 deletions
diff --git a/src/comp/fe/ast.rs b/src/comp/fe/ast.rs index 7544b40a..dcea02de 100644 --- a/src/comp/fe/ast.rs +++ b/src/comp/fe/ast.rs @@ -36,20 +36,20 @@ tag atom { tag lit { lit_char(char); lit_int(int); - lit_nil(); + lit_nil; lit_bool(bool); } tag ty { - ty_nil(); - ty_bool(); - ty_int(); - ty_char(); + ty_nil; + ty_bool; + ty_int; + ty_char; } tag mode { - val(); - alias(); + val; + alias; } type slot = rec(ty ty, mode mode); diff --git a/src/comp/fe/lexer.rs b/src/comp/fe/lexer.rs index b303fc3c..f68fcc05 100644 --- a/src/comp/fe/lexer.rs +++ b/src/comp/fe/lexer.rs @@ -94,100 +94,100 @@ fn new_reader(stdio_reader rdr, str filename) -> reader auto keywords = new_str_hash[token.token](); auto reserved = new_str_hash[()](); - keywords.insert("mod", token.MOD()); - keywords.insert("use", token.USE()); - keywords.insert("meta", token.META()); - keywords.insert("auth", token.AUTH()); + keywords.insert("mod", token.MOD); + keywords.insert("use", token.USE); + keywords.insert("meta", token.META); + keywords.insert("auth", token.AUTH); - keywords.insert("syntax", token.SYNTAX()); + keywords.insert("syntax", token.SYNTAX); - keywords.insert("if", token.IF()); - keywords.insert("else", token.ELSE()); - keywords.insert("while", token.WHILE()); - keywords.insert("do", token.DO()); - keywords.insert("alt", token.ALT()); - keywords.insert("case", token.CASE()); + keywords.insert("if", token.IF); + keywords.insert("else", token.ELSE); + keywords.insert("while", token.WHILE); + keywords.insert("do", token.DO); + keywords.insert("alt", token.ALT); + keywords.insert("case", token.CASE); - keywords.insert("for", token.FOR()); - keywords.insert("each", token.EACH()); - keywords.insert("put", token.PUT()); - keywords.insert("ret", token.RET()); - keywords.insert("be", token.BE()); + keywords.insert("for", token.FOR); + keywords.insert("each", token.EACH); + keywords.insert("put", token.PUT); + keywords.insert("ret", token.RET); + keywords.insert("be", token.BE); - keywords.insert("fail", token.FAIL()); - keywords.insert("drop", token.DROP()); + keywords.insert("fail", token.FAIL); + keywords.insert("drop", token.DROP); - keywords.insert("type", token.TYPE()); - keywords.insert("check", token.CHECK()); - keywords.insert("claim", token.CLAIM()); - keywords.insert("prove", token.PROVE()); + keywords.insert("type", token.TYPE); + keywords.insert("check", token.CHECK); + keywords.insert("claim", token.CLAIM); + keywords.insert("prove", token.PROVE); - keywords.insert("io", token.IO()); - keywords.insert("state", token.STATE()); - keywords.insert("unsafe", token.UNSAFE()); + keywords.insert("io", token.IO); + keywords.insert("state", token.STATE); + keywords.insert("unsafe", token.UNSAFE); - keywords.insert("native", token.NATIVE()); - keywords.insert("mutable", token.MUTABLE()); - keywords.insert("auto", token.AUTO()); + keywords.insert("native", token.NATIVE); + keywords.insert("mutable", token.MUTABLE); + keywords.insert("auto", token.AUTO); - keywords.insert("fn", token.FN()); - keywords.insert("iter", token.ITER()); + keywords.insert("fn", token.FN); + keywords.insert("iter", token.ITER); - keywords.insert("import", token.IMPORT()); - keywords.insert("export", token.EXPORT()); + keywords.insert("import", token.IMPORT); + keywords.insert("export", token.EXPORT); - keywords.insert("let", token.LET()); - keywords.insert("const", token.CONST()); + keywords.insert("let", token.LET); + keywords.insert("const", token.CONST); - keywords.insert("log", token.LOG()); - keywords.insert("spawn", token.SPAWN()); - keywords.insert("thread", token.THREAD()); - keywords.insert("yield", token.YIELD()); - keywords.insert("join", token.JOIN()); + keywords.insert("log", token.LOG); + keywords.insert("spawn", token.SPAWN); + keywords.insert("thread", token.THREAD); + keywords.insert("yield", token.YIELD); + keywords.insert("join", token.JOIN); - keywords.insert("bool", token.BOOL()); + keywords.insert("bool", token.BOOL); - keywords.insert("int", token.INT()); - keywords.insert("uint", token.UINT()); - keywords.insert("float", token.FLOAT()); + keywords.insert("int", token.INT); + keywords.insert("uint", token.UINT); + keywords.insert("float", token.FLOAT); - keywords.insert("char", token.CHAR()); - keywords.insert("str", token.STR()); + keywords.insert("char", token.CHAR); + keywords.insert("str", token.STR); - keywords.insert("rec", token.REC()); - keywords.insert("tup", token.TUP()); - keywords.insert("tag", token.TAG()); - keywords.insert("vec", token.VEC()); - keywords.insert("any", token.ANY()); + keywords.insert("rec", token.REC); + keywords.insert("tup", token.TUP); + keywords.insert("tag", token.TAG); + keywords.insert("vec", token.VEC); + keywords.insert("any", token.ANY); - keywords.insert("obj", token.OBJ()); + keywords.insert("obj", token.OBJ); - keywords.insert("port", token.PORT()); - keywords.insert("chan", token.CHAN()); + keywords.insert("port", token.PORT); + keywords.insert("chan", token.CHAN); - keywords.insert("task", token.TASK()); + keywords.insert("task", token.TASK); keywords.insert("true", token.LIT_BOOL(true)); keywords.insert("false", token.LIT_BOOL(false)); - keywords.insert("in", token.IN()); + keywords.insert("in", token.IN); - keywords.insert("as", token.AS()); - keywords.insert("with", token.WITH()); + keywords.insert("as", token.AS); + keywords.insert("with", token.WITH); - keywords.insert("bind", token.BIND()); + keywords.insert("bind", token.BIND); - keywords.insert("u8", token.MACH(common.ty_u8())); - keywords.insert("u16", token.MACH(common.ty_u16())); - keywords.insert("u32", token.MACH(common.ty_u32())); - keywords.insert("u64", token.MACH(common.ty_u64())); - keywords.insert("i8", token.MACH(common.ty_i8())); - keywords.insert("i16", token.MACH(common.ty_i16())); - keywords.insert("i32", token.MACH(common.ty_i32())); - keywords.insert("i64", token.MACH(common.ty_i64())); - keywords.insert("f32", token.MACH(common.ty_f32())); - keywords.insert("f64", token.MACH(common.ty_f64())); + keywords.insert("u8", token.MACH(common.ty_u8)); + keywords.insert("u16", token.MACH(common.ty_u16)); + keywords.insert("u32", token.MACH(common.ty_u32)); + keywords.insert("u64", token.MACH(common.ty_u64)); + keywords.insert("i8", token.MACH(common.ty_i8)); + keywords.insert("i16", token.MACH(common.ty_i16)); + keywords.insert("i32", token.MACH(common.ty_i32)); + keywords.insert("i64", token.MACH(common.ty_i64)); + keywords.insert("f32", token.MACH(common.ty_f32)); + keywords.insert("f64", token.MACH(common.ty_f64)); ret reader(rdr, filename, rdr.getc() as char, rdr.getc() as char, 1u, 1u, 1u, 1u, keywords, reserved); @@ -305,7 +305,7 @@ state fn next_token(reader rdr) -> token.token { consume_any_whitespace(rdr); - if (rdr.is_eof()) { ret token.EOF(); } + if (rdr.is_eof()) { ret token.EOF; } auto c = rdr.curr(); @@ -372,20 +372,20 @@ state fn next_token(reader rdr) -> token.token { alt (c) { // One-byte tokens. - case (':') { rdr.bump(); ret token.COLON(); } - case (';') { rdr.bump(); ret token.SEMI(); } - case (',') { rdr.bump(); ret token.COMMA(); } - case ('.') { rdr.bump(); ret token.DOT(); } - case ('(') { rdr.bump(); ret token.LPAREN(); } - case (')') { rdr.bump(); ret token.RPAREN(); } - case ('{') { rdr.bump(); ret token.LBRACE(); } - case ('}') { rdr.bump(); ret token.RBRACE(); } - case ('[') { rdr.bump(); ret token.LBRACKET(); } - case (']') { rdr.bump(); ret token.RBRACKET(); } - case ('@') { rdr.bump(); ret token.AT(); } - case ('#') { rdr.bump(); ret token.POUND(); } - case ('_') { rdr.bump(); ret token.UNDERSCORE(); } - case ('~') { rdr.bump(); ret token.TILDE(); } + case (':') { rdr.bump(); ret token.COLON; } + case (';') { rdr.bump(); ret token.SEMI; } + case (',') { rdr.bump(); ret token.COMMA; } + case ('.') { rdr.bump(); ret token.DOT; } + case ('(') { rdr.bump(); ret token.LPAREN; } + case (')') { rdr.bump(); ret token.RPAREN; } + case ('{') { rdr.bump(); ret token.LBRACE; } + case ('}') { rdr.bump(); ret token.RBRACE; } + case ('[') { rdr.bump(); ret token.LBRACKET; } + case (']') { rdr.bump(); ret token.RBRACKET; } + case ('@') { rdr.bump(); ret token.AT; } + case ('#') { rdr.bump(); ret token.POUND; } + case ('_') { rdr.bump(); ret token.UNDERSCORE; } + case ('~') { rdr.bump(); ret token.TILDE; } // Multi-byte tokens. @@ -393,9 +393,9 @@ state fn next_token(reader rdr) -> token.token { rdr.bump(); if (rdr.curr() == '=') { rdr.bump(); - ret token.EQEQ(); + ret token.EQEQ; } else { - ret token.EQ(); + ret token.EQ; } } @@ -403,9 +403,9 @@ state fn next_token(reader rdr) -> token.token { rdr.bump(); if (rdr.curr() == '=') { rdr.bump(); - ret token.NE(); + ret token.NE; } else { - ret token.NOT(); + ret token.NOT; } } @@ -414,21 +414,21 @@ state fn next_token(reader rdr) -> token.token { alt (rdr.curr()) { case ('=') { rdr.bump(); - ret token.LE(); + ret token.LE; } case ('<') { - ret binop(rdr, token.LSL()); + ret binop(rdr, token.LSL); } case ('-') { rdr.bump(); - ret token.LARROW(); + ret token.LARROW; } case ('|') { rdr.bump(); - ret token.SEND(); + ret token.SEND; } case (_) { - ret token.LT(); + ret token.LT; } } } @@ -438,20 +438,20 @@ state fn next_token(reader rdr) -> token.token { alt (rdr.curr()) { case ('=') { rdr.bump(); - ret token.GE(); + ret token.GE; } case ('>') { if (rdr.next() == '>') { rdr.bump(); - ret binop(rdr, token.ASR()); + ret binop(rdr, token.ASR); } else { - ret binop(rdr, token.LSR()); + ret binop(rdr, token.LSR); } } case (_) { - ret token.GT(); + ret token.GT; } } } @@ -467,7 +467,7 @@ state fn next_token(reader rdr) -> token.token { case ('\\') { rdr.bump(); c2 = '\\'; } case ('\'') { rdr.bump(); c2 = '\''; } // FIXME: unicode numeric escapes. - case (c2) { + case (?c2) { log "unknown character escape"; log c2; fail; @@ -512,7 +512,7 @@ state fn next_token(reader rdr) -> token.token { accum_str += '"' as u8; } // FIXME: unicode numeric escapes. - case (c2) { + case (?c2) { log "unknown string escape"; log c2; fail; @@ -533,9 +533,9 @@ state fn next_token(reader rdr) -> token.token { if (rdr.next() == '>') { rdr.bump(); rdr.bump(); - ret token.RARROW(); + ret token.RARROW; } else { - ret binop(rdr, token.MINUS()); + ret binop(rdr, token.MINUS); } } @@ -543,9 +543,9 @@ state fn next_token(reader rdr) -> token.token { if (rdr.next() == '&') { rdr.bump(); rdr.bump(); - ret token.ANDAND(); + ret token.ANDAND; } else { - ret binop(rdr, token.AND()); + ret binop(rdr, token.AND); } } @@ -553,37 +553,37 @@ state fn next_token(reader rdr) -> token.token { if (rdr.next() == '|') { rdr.bump(); rdr.bump(); - ret token.OROR(); + ret token.OROR; } else { - ret binop(rdr, token.OR()); + ret binop(rdr, token.OR); } } case ('+') { - ret binop(rdr, token.PLUS()); + ret binop(rdr, token.PLUS); } case ('*') { - ret binop(rdr, token.STAR()); + ret binop(rdr, token.STAR); } case ('/') { - ret binop(rdr, token.STAR()); + ret binop(rdr, token.STAR); } case ('^') { - ret binop(rdr, token.CARET()); + ret binop(rdr, token.CARET); } case ('%') { - ret binop(rdr, token.PERCENT()); + ret binop(rdr, token.PERCENT); } } log "lexer stopping at "; log c; - ret token.EOF(); + ret token.EOF; } diff --git a/src/comp/fe/parser.rs b/src/comp/fe/parser.rs index 6ffd911e..24228a8a 100644 --- a/src/comp/fe/parser.rs +++ b/src/comp/fe/parser.rs @@ -64,7 +64,7 @@ state fn expect(parser p, token.token t) { state fn parse_ident(parser p) -> ast.ident { alt (p.peek()) { - case (token.IDENT(i)) { ret i; } + case (token.IDENT(?i)) { ret i; } case (_) { p.err("expecting ident"); fail; @@ -77,10 +77,10 @@ state fn parse_item(parser p) -> tup(ast.ident, ast.item) { case (token.FN()) { p.bump(); auto id = parse_ident(p); - expect(p, token.LPAREN()); + expect(p, token.LPAREN); let vec[rec(ast.slot slot, ast.ident ident)] inputs = vec(); let vec[@ast.stmt] body = vec(); - auto output = rec(ty = ast.ty_nil(), mode = ast.val() ); + auto output = rec(ty = ast.ty_nil, mode = ast.val ); let ast._fn f = rec(inputs = inputs, output = output, body = body); diff --git a/src/comp/fe/token.rs b/src/comp/fe/token.rs index 85e33b64..ca58d4fe 100644 --- a/src/comp/fe/token.rs +++ b/src/comp/fe/token.rs @@ -4,114 +4,114 @@ import std._int; import std._uint; tag binop { - PLUS(); - MINUS(); - STAR(); - SLASH(); - PERCENT(); - CARET(); - AND(); - OR(); - LSL(); - LSR(); - ASR(); + PLUS; + MINUS; + STAR; + SLASH; + PERCENT; + CARET; + AND; + OR; + LSL; + LSR; + ASR; } tag token { /* Expression-operator symbols. */ - EQ(); - LT(); - LE(); - EQEQ(); - NE(); - GE(); - GT(); - ANDAND(); - OROR(); - NOT(); - TILDE(); + EQ; + LT; + LE; + EQEQ; + NE; + GE; + GT; + ANDAND; + OROR; + NOT; + TILDE; BINOP(binop); BINOPEQ(binop); - AS(); - WITH(); + AS; + WITH; /* Structural symbols */ - AT(); - DOT(); - COMMA(); - SEMI(); - COLON(); - RARROW(); - SEND(); - LARROW(); - LPAREN(); - RPAREN(); - LBRACKET(); - RBRACKET(); - LBRACE(); - RBRACE(); + AT; + DOT; + COMMA; + SEMI; + COLON; + RARROW; + SEND; + LARROW; + LPAREN; + RPAREN; + LBRACKET; + RBRACKET; + LBRACE; + RBRACE; /* Module and crate keywords */ - MOD(); - USE(); - AUTH(); - META(); + MOD; + USE; + AUTH; + META; /* Metaprogramming keywords */ - SYNTAX(); - POUND(); + SYNTAX; + POUND; /* Statement keywords */ - IF(); - ELSE(); - DO(); - WHILE(); - ALT(); - CASE(); - - FAIL(); - DROP(); - - IN(); - FOR(); - EACH(); - PUT(); - RET(); - BE(); + IF; + ELSE; + DO; + WHILE; + ALT; + CASE; + + FAIL; + DROP; + + IN; + FOR; + EACH; + PUT; + RET; + BE; /* Type and type-state keywords */ - TYPE(); - CHECK(); - CLAIM(); - PROVE(); + TYPE; + CHECK; + CLAIM; + PROVE; /* Effect keywords */ - IO(); - STATE(); - UNSAFE(); + IO; + STATE; + UNSAFE; /* Type qualifiers */ - NATIVE(); - AUTO(); - MUTABLE(); + NATIVE; + AUTO; + MUTABLE; /* Name management */ - IMPORT(); - EXPORT(); + IMPORT; + EXPORT; /* Value / stmt declarators */ - LET(); - CONST(); + LET; + CONST; /* Magic runtime services */ - LOG(); - SPAWN(); - BIND(); - THREAD(); - YIELD(); - JOIN(); + LOG; + SPAWN; + BIND; + THREAD; + YIELD; + JOIN; /* Literals */ LIT_INT(int); @@ -124,167 +124,167 @@ tag token { /* Name components */ IDENT(str); IDX(int); - UNDERSCORE(); + UNDERSCORE; /* Reserved type names */ - BOOL(); - INT(); - UINT(); - FLOAT(); - CHAR(); - STR(); + BOOL; + INT; + UINT; + FLOAT; + CHAR; + STR; MACH(ty_mach); /* Algebraic type constructors */ - REC(); - TUP(); - TAG(); - VEC(); - ANY(); + REC; + TUP; + TAG; + VEC; + ANY; /* Callable type constructors */ - FN(); - ITER(); + FN; + ITER; /* Object type */ - OBJ(); + OBJ; /* Comm and task types */ - CHAN(); - PORT(); - TASK(); + CHAN; + PORT; + TASK; BRACEQUOTE(str); - EOF(); + EOF; } fn binop_to_str(binop o) -> str { alt (o) { - case (PLUS()) { ret "+"; } - case (MINUS()) { ret "-"; } - case (STAR()) { ret "*"; } - case (SLASH()) { ret "/"; } - case (PERCENT()) { ret "%"; } - case (CARET()) { ret "^"; } - case (AND()) { ret "&"; } - case (OR()) { ret "|"; } - case (LSL()) { ret "<<"; } - case (LSR()) { ret ">>"; } - case (ASR()) { ret ">>>"; } + case (PLUS) { ret "+"; } + case (MINUS) { ret "-"; } + case (STAR) { ret "*"; } + case (SLASH) { ret "/"; } + case (PERCENT) { ret "%"; } + case (CARET) { ret "^"; } + case (AND) { ret "&"; } + case (OR) { ret "|"; } + case (LSL) { ret "<<"; } + case (LSR) { ret ">>"; } + case (ASR) { ret ">>>"; } } } fn to_str(token t) -> str { alt (t) { - case (EQ()) { ret "="; } - case (LT()) { ret "<"; } - case (LE()) { ret "<="; } - case (EQEQ()) { ret "=="; } - case (NE()) { ret "!="; } - case (GE()) { ret ">="; } - case (GT()) { ret ">"; } - case (NOT()) { ret "!"; } - case (TILDE()) { ret "~"; } - case (OROR()) { ret "||"; } - case (ANDAND()) { ret "&&"; } + case (EQ) { ret "="; } + case (LT) { ret "<"; } + case (LE) { ret "<="; } + case (EQEQ) { ret "=="; } + case (NE) { ret "!="; } + case (GE) { ret ">="; } + case (GT) { ret ">"; } + case (NOT) { ret "!"; } + case (TILDE) { ret "~"; } + case (OROR) { ret "||"; } + case (ANDAND) { ret "&&"; } - case (BINOP(op)) { ret binop_to_str(op); } - case (BINOPEQ(op)) { ret binop_to_str(op) + "="; } + case (BINOP(?op)) { ret binop_to_str(op); } + case (BINOPEQ(?op)) { ret binop_to_str(op) + "="; } - case (AS()) { ret "as"; } - case (WITH()) { ret "with"; } + case (AS) { ret "as"; } + case (WITH) { ret "with"; } /* Structural symbols */ - case (AT()) { ret "@"; } - case (DOT()) { ret "."; } - case (COMMA()) { ret ","; } - case (SEMI()) { ret ";"; } - case (COLON()) { ret ":"; } - case (RARROW()) { ret "->"; } - case (SEND()) { ret "<|"; } - case (LARROW()) { ret "<-"; } - case (LPAREN()) { ret "("; } - case (RPAREN()) { ret ")"; } - case (LBRACKET()) { ret "["; } - case (RBRACKET()) { ret "]"; } - case (LBRACE()) { ret "{"; } - case (RBRACE()) { ret "}"; } + case (AT) { ret "@"; } + case (DOT) { ret "."; } + case (COMMA) { ret ","; } + case (SEMI) { ret ";"; } + case (COLON) { ret ":"; } + case (RARROW) { ret "->"; } + case (SEND) { ret "<|"; } + case (LARROW) { ret "<-"; } + case (LPAREN) { ret "("; } + case (RPAREN) { ret ")"; } + case (LBRACKET) { ret "["; } + case (RBRACKET) { ret "]"; } + case (LBRACE) { ret "{"; } + case (RBRACE) { ret "}"; } /* Module and crate keywords */ - case (MOD()) { ret "mod"; } - case (USE()) { ret "use"; } - case (AUTH()) { ret "auth"; } - case (META()) { ret "meta"; } + case (MOD) { ret "mod"; } + case (USE) { ret "use"; } + case (AUTH) { ret "auth"; } + case (META) { ret "meta"; } /* Metaprogramming keywords */ - case (SYNTAX()) { ret "syntax"; } - case (POUND()) { ret "#"; } + case (SYNTAX) { ret "syntax"; } + case (POUND) { ret "#"; } /* Statement keywords */ - case (IF()) { ret "if"; } - case (ELSE()) { ret "else"; } - case (DO()) { ret "do"; } - case (WHILE()) { ret "while"; } - case (ALT()) { ret "alt"; } - case (CASE()) { ret "case"; } - - case (FAIL()) { ret "fail"; } - case (DROP()) { ret "drop"; } - - case (IN()) { ret "in"; } - case (FOR()) { ret "for"; } - case (EACH()) { ret "each"; } - case (PUT()) { ret "put"; } - case (RET()) { ret "ret"; } - case (BE()) { ret "be"; } + case (IF) { ret "if"; } + case (ELSE) { ret "else"; } + case (DO) { ret "do"; } + case (WHILE) { ret "while"; } + case (ALT) { ret "alt"; } + case (CASE) { ret "case"; } + + case (FAIL) { ret "fail"; } + case (DROP) { ret "drop"; } + + case (IN) { ret "in"; } + case (FOR) { ret "for"; } + case (EACH) { ret "each"; } + case (PUT) { ret "put"; } + case (RET) { ret "ret"; } + case (BE) { ret "be"; } /* Type and type-state keywords */ - case (TYPE()) { ret "type"; } - case (CHECK()) { ret "check"; } - case (CLAIM()) { ret "claim"; } - case (PROVE()) { ret "prove"; } + case (TYPE) { ret "type"; } + case (CHECK) { ret "check"; } + case (CLAIM) { ret "claim"; } + case (PROVE) { ret "prove"; } /* Effect keywords */ - case (IO()) { ret "io"; } - case (STATE()) { ret "state"; } - case (UNSAFE()) { ret "unsafe"; } + case (IO) { ret "io"; } + case (STATE) { ret "state"; } + case (UNSAFE) { ret "unsafe"; } /* Type qualifiers */ - case (NATIVE()) { ret "native"; } - case (AUTO()) { ret "auto"; } - case (MUTABLE()) { ret "mutable"; } + case (NATIVE) { ret "native"; } + case (AUTO) { ret "auto"; } + case (MUTABLE) { ret "mutable"; } /* Name management */ - case (IMPORT()) { ret "import"; } - case (EXPORT()) { ret "export"; } + case (IMPORT) { ret "import"; } + case (EXPORT) { ret "export"; } /* Value / stmt declarators */ - case (LET()) { ret "let"; } - case (CONST()) { ret "const"; } + case (LET) { ret "let"; } + case (CONST) { ret "const"; } /* Magic runtime services */ - case (LOG()) { ret "log"; } - case (SPAWN()) { ret "spawn"; } - case (BIND()) { ret "bind"; } - case (THREAD()) { ret "thread"; } - case (YIELD()) { ret "yield"; } - case (JOIN()) { ret "join"; } + case (LOG) { ret "log"; } + case (SPAWN) { ret "spawn"; } + case (BIND) { ret "bind"; } + case (THREAD) { ret "thread"; } + case (YIELD) { ret "yield"; } + case (JOIN) { ret "join"; } /* Literals */ - case (LIT_INT(i)) { ret _int.to_str(i, 10u); } - case (LIT_UINT(u)) { ret _uint.to_str(u, 10u); } - case (LIT_MACH_INT(tm, i)) { + case (LIT_INT(?i)) { ret _int.to_str(i, 10u); } + case (LIT_UINT(?u)) { ret _uint.to_str(u, 10u); } + case (LIT_MACH_INT(?tm, ?i)) { ret _int.to_str(i, 10u) + "_" + ty_mach_to_str(tm); } - case (LIT_STR(s)) { + case (LIT_STR(?s)) { // FIXME: escape. ret "\"" + s + "\""; } - case (LIT_CHAR(c)) { + case (LIT_CHAR(?c)) { // FIXME: escape and encode. auto tmp = "'"; tmp += c as u8; @@ -292,45 +292,45 @@ fn to_str(token t) -> str { ret tmp; } - case (LIT_BOOL(b)) { + case (LIT_BOOL(?b)) { if (b) { ret "true"; } else { ret "false"; } } /* Name components */ - case (IDENT(s)) { auto si = "ident:"; si += s; ret si; } - case (IDX(i)) { ret "_" + _int.to_str(i, 10u); } - case (UNDERSCORE()) { ret "_"; } + case (IDENT(?s)) { auto si = "ident:"; si += s; ret si; } + case (IDX(?i)) { ret "_" + _int.to_str(i, 10u); } + case (UNDERSCORE) { ret "_"; } /* Reserved type names */ - case (BOOL()) { ret "bool"; } - case (INT()) { ret "int"; } - case (UINT()) { ret "uint"; } - case (FLOAT()) { ret "float"; } - case (CHAR()) { ret "char"; } - case (STR()) { ret "str"; } - case (MACH(tm)) { ret ty_mach_to_str(tm); } + case (BOOL) { ret "bool"; } + case (INT) { ret "int"; } + case (UINT) { ret "uint"; } + case (FLOAT) { ret "float"; } + case (CHAR) { ret "char"; } + case (STR) { ret "str"; } + case (MACH(?tm)) { ret ty_mach_to_str(tm); } /* Algebraic type constructors */ - case (REC()) { ret "rec"; } - case (TUP()) { ret "tup"; } - case (TAG()) { ret "tag"; } - case (VEC()) { ret "vec"; } - case (ANY()) { ret "any"; } + case (REC) { ret "rec"; } + case (TUP) { ret "tup"; } + case (TAG) { ret "tag"; } + case (VEC) { ret "vec"; } + case (ANY) { ret "any"; } /* Callable type constructors */ - case (FN()) { ret "fn"; } - case (ITER()) { ret "iter"; } + case (FN) { ret "fn"; } + case (ITER) { ret "iter"; } /* Object type */ - case (OBJ()) { ret "obj"; } + case (OBJ) { ret "obj"; } /* Comm and task types */ - case (CHAN()) { ret "chan"; } - case (PORT()) { ret "port"; } - case (TASK()) { ret "task"; } + case (CHAN) { ret "chan"; } + case (PORT) { ret "port"; } + case (TASK) { ret "task"; } case (BRACEQUOTE(_)) { ret "<bracequote>"; } - case (EOF()) { ret "<eof>"; } + case (EOF) { ret "<eof>"; } } } diff --git a/src/comp/util/common.rs b/src/comp/util/common.rs index b3e85ac3..086a1e54 100644 --- a/src/comp/util/common.rs +++ b/src/comp/util/common.rs @@ -4,34 +4,34 @@ type pos = rec(uint line, uint col); type span = rec(str filename, pos lo, pos hi); tag ty_mach { - ty_i8(); - ty_i16(); - ty_i32(); - ty_i64(); - - ty_u8(); - ty_u16(); - ty_u32(); - ty_u64(); - - ty_f32(); - ty_f64(); + ty_i8; + ty_i16; + ty_i32; + ty_i64; + + ty_u8; + ty_u16; + ty_u32; + ty_u64; + + ty_f32; + ty_f64; } fn ty_mach_to_str(ty_mach tm) -> str { alt (tm) { - case (ty_u8()) { ret "u8"; } - case (ty_u16()) { ret "u16"; } - case (ty_u32()) { ret "u32"; } - case (ty_u64()) { ret "u64"; } - - case (ty_i8()) { ret "i8"; } - case (ty_i16()) { ret "i16"; } - case (ty_i32()) { ret "i32"; } - case (ty_i64()) { ret "i64"; } - - case (ty_f32()) { ret "f32"; } - case (ty_f64()) { ret "f64"; } + case (ty_u8) { ret "u8"; } + case (ty_u16) { ret "u16"; } + case (ty_u32) { ret "u32"; } + case (ty_u64) { ret "u64"; } + + case (ty_i8) { ret "i8"; } + case (ty_i16) { ret "i16"; } + case (ty_i32) { ret "i32"; } + case (ty_i64) { ret "i64"; } + + case (ty_f32) { ret "f32"; } + case (ty_f64) { ret "f64"; } } } |