Mercurial > projects > dil
changeset 73:11572f4a138c
- Added methods for parsing OrOrExpressions, AndAndExpressions, OrExpressions, XorExpressions and AndExpressions.
- Added stub for parsing CmpExpressions.
author | aziz |
---|---|
date | Sun, 01 Jul 2007 18:26:05 +0000 |
parents | f75e359f939f |
children | 30b0fb85dda9 |
files | trunk/src/Parser.d |
diffstat | 1 files changed, 62 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/trunk/src/Parser.d Sun Jul 01 17:21:02 2007 +0000 +++ b/trunk/src/Parser.d Sun Jul 01 18:26:05 2007 +0000 @@ -104,7 +104,7 @@ Expression parseCondExpression() { auto e = parseOrOrExpression(); - if (lx.token.type == TOK.Question) + if (lx.token.type == T.Question) { nT(); auto iftrue = parseExpression(); @@ -118,7 +118,67 @@ Expression parseOrOrExpression() { - return new Expression(); + alias parseAndAndExpression parseNext; + auto e = parseNext(); + if (lx.token.type == T.OrLogical) + { + nT(); + e = new OrOrExpression(e, parseNext()); + } + return e; + } + + Expression parseAndAndExpression() + { + alias parseOrExpression parseNext; + auto e = parseNext(); + if (lx.token.type == T.AndLogical) + { + nT(); + e = new AndAndExpression(e, parseNext()); + } + return e; + } + + Expression parseOrExpression() + { + alias parseXorExpression parseNext; + auto e = parseNext(); + if (lx.token.type == T.OrBinary) + { + nT(); + e = new OrExpression(e, parseNext()); + } + return e; + } + + Expression parseXorExpression() + { + alias parseAndExpression parseNext; + auto e = parseNext(); + if (lx.token.type == T.Xor) + { + nT(); + e = new XorExpression(e, parseNext()); + } + return e; + } + + Expression parseAndExpression() + { + alias parseCmpExpression parseNext; + auto e = parseNext(); + if (lx.token.type == T.AndBinary) + { + nT(); + e = new AndExpression(e, parseNext()); + } + return e; + } + + Expression parseCmpExpression() + { + return new Expression; } void error(MID id, ...)