changeset 97:1a83e5070a84

- Added code for parsing IntNumber- and RealNumberExpressions.
author aziz
date Fri, 06 Jul 2007 20:28:00 +0000
parents d12d31d5fc17
children aec3b16144fe
files trunk/src/Expressions.d trunk/src/Parser.d trunk/src/Token.d
diffstat 3 files changed, 31 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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;
--- 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();
--- 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,