# HG changeset patch # User johnsen@johnsen-laptop # Date 1208547557 -7200 # Node ID 0fb2d13dce37a75b6b76652717dd6d4e80d3ad82 # Parent 95e3940d91d40cd90a6c5ab756fc677f2769cbaa Now working with gdc also (gdc use reverse paremeter validating on function calls) diff -r 95e3940d91d4 -r 0fb2d13dce37 lexer/Token.d --- a/lexer/Token.d Fri Apr 18 20:28:49 2008 +0200 +++ b/lexer/Token.d Fri Apr 18 21:39:17 2008 +0200 @@ -113,6 +113,7 @@ Tok.Integer:"Integer", Tok.If:"If", Tok.While:"While", + Tok.Comma:"Comma", Tok.Return:"Return", Tok.Seperator:"Seperator" ]; diff -r 95e3940d91d4 -r 0fb2d13dce37 parser/Parser.d --- a/parser/Parser.d Fri Apr 18 20:28:49 2008 +0200 +++ b/parser/Parser.d Fri Apr 18 21:39:17 2008 +0200 @@ -7,6 +7,8 @@ ast.Stmt, ast.Decl; +import misc.Error; + import tango.io.Stdout, Integer = tango.text.convert.Integer; @@ -45,6 +47,7 @@ Identifier type = new Identifier(t); Token iden = lexer.next; + switch(iden.type) { case Tok.Identifier: @@ -170,7 +173,9 @@ while(lexer.peek.type != Tok.CloseParentheses) { - funcArgs ~= new VarDecl(parseType, parseIdentifier); + auto t = parseType; + auto i = parseIdentifier; + funcArgs ~= new VarDecl(t, i); if(lexer.peek.type == Tok.Comma) lexer.next; @@ -191,7 +196,7 @@ return new Identifier(identifier); break; default: - error("Unexpexted token in Identifier parsing"); + throw new Error("Unexpexted token in Identifier parsing. Got "~identifier.getType, identifier.location); } } diff -r 95e3940d91d4 -r 0fb2d13dce37 test.td --- a/test.td Fri Apr 18 20:28:49 2008 +0200 +++ b/test.td Fri Apr 18 21:39:17 2008 +0200 @@ -16,8 +16,8 @@ int nice(long s, short t) { + int y; byte x = 5 + t + y; - int y; if (x != 0) t = 5 + 1 * 5 * s + t; return 2 * (t + -1) - x;