# HG changeset patch # User aziz # Date 1183753680 0 # Node ID 1a83e5070a844cf4f81219a3253839acb383e8bb # Parent d12d31d5fc17727a1848b8d83adab341588e80f9 - Added code for parsing IntNumber- and RealNumberExpressions. diff -r d12d31d5fc17 -r 1a83e5070a84 trunk/src/Expressions.d --- a/trunk/src/Expressions.d Fri Jul 06 18:49:00 2007 +0000 +++ b/trunk/src/Expressions.d Fri Jul 06 20:28:00 2007 +0000 @@ -407,6 +407,28 @@ { this.value = value; } } +class IntNumberExpression : Expression +{ + TOK type; + ulong number; + this(TOK type, ulong number) + { + this.number = number; + this.type = type; + } +} + +class RealNumberExpression : Expression +{ + TOK type; + real number; + this(TOK type, real number) + { + this.number = number; + this.type = type; + } +} + class CharLiteralExpression : Expression { TOK tok; diff -r d12d31d5fc17 -r 1a83e5070a84 trunk/src/Parser.d --- a/trunk/src/Parser.d Fri Jul 06 18:49:00 2007 +0000 +++ b/trunk/src/Parser.d Fri Jul 06 20:28:00 2007 +0000 @@ -430,7 +430,14 @@ nT(); e = new DollarExpression(); break; - case T.Int32/*, ...*/: // Number literals + case T.Int32, T.Int64, T.Uint32, T.Uint64: + nT(); + e = new IntNumberExpression(token.type, token.ulong_); + break; + case T.Float32, T.Float64, T.Float80, + T.Imaginary32, T.Imaginary64, T.Imaginary80: + nT(); + e = new RealNumberExpression(token.type, token.real_); break; case T.CharLiteral, T.WCharLiteral, T.DCharLiteral: nT(); diff -r d12d31d5fc17 -r 1a83e5070a84 trunk/src/Token.d --- a/trunk/src/Token.d Fri Jul 06 18:49:00 2007 +0000 +++ b/trunk/src/Token.d Fri Jul 06 20:28:00 2007 +0000 @@ -22,7 +22,7 @@ // Numbers Number, Int32, Int64, Uint32, Uint64, - // Floating point scanner relies on this order. (FloatXY + 3 == ImaginaryXY) + // Floating point number scanner relies on this order. (FloatXY + 3 == ImaginaryXY) Float32, Float64, Float80, Imaginary32, Imaginary64, Imaginary80,