Mercurial > projects > dil
changeset 77:7e21c4df1c02
- Implemented parseMulExpression().
- Added stub for parseUnaryExpression().
- Added classes DivExpression and ModExpression.
author | aziz |
---|---|
date | Sun, 01 Jul 2007 19:39:03 +0000 |
parents | a85f9edf6ce7 |
children | f043759fb59a |
files | trunk/src/Expressions.d trunk/src/Parser.d |
diffstat | 2 files changed, 31 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/trunk/src/Expressions.d Sun Jul 01 19:28:02 2007 +0000 +++ b/trunk/src/Expressions.d Sun Jul 01 19:39:03 2007 +0000 @@ -135,8 +135,20 @@ class MulExpression : BinaryExpression { - this(Expression left, Expression right, TOK tok) - { super(left, right, tok); } + this(Expression left, Expression right) + { super(left, right, TOK.Mul); } +} + +class DivExpression : BinaryExpression +{ + this(Expression left, Expression right) + { super(left, right, TOK.Div); } +} + +class ModExpression : BinaryExpression +{ + this(Expression left, Expression right) + { super(left, right, TOK.Mod); } } class CatExpression : BinaryExpression
--- a/trunk/src/Parser.d Sun Jul 01 19:28:02 2007 +0000 +++ b/trunk/src/Parser.d Sun Jul 01 19:39:03 2007 +0000 @@ -253,9 +253,26 @@ Expression parseMulExpression() { + auto e = parseUnaryExpression(); + while (1) + { + switch (lx.token.type) + { + case T.Mul: nT(); e = new MulExpression(e, parseUnaryExpression()); break; + case T.Div: nT(); e = new DivExpression(e, parseUnaryExpression()); break; + case T.Mod: nT(); e = new ModExpression(e, parseUnaryExpression()); break; + default: break; + } + break; + } return new Expression(); } + Expression parseUnaryExpression() + { + return new Expression; + } + void error(MID id, ...) { errors ~= new Information(Information.Type.Parser, id, lx.loc, arguments(_arguments, _argptr));