changeset 15:c70c028e47dd

- Started implementation of lexing numbers.
author aziz
date Sat, 23 Jun 2007 14:11:01 +0000
parents cdf788d8bdaf
children 476e8e55c1d4
files trunk/src/Lexer.d trunk/src/Token.d trunk/src/main.d
diffstat 3 files changed, 14 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/trunk/src/Lexer.d	Sat Jun 23 13:14:05 2007 +0000
+++ b/trunk/src/Lexer.d	Sat Jun 23 14:11:01 2007 +0000
@@ -122,6 +122,9 @@
         return;
       }
 
+      if (isdigit(c))
+        return scanNumber(t);
+
       if (c == '/')
       {
         c = *++p;
@@ -215,6 +218,13 @@
     }
   }
 
+  void scanNumber(ref Token t)
+  {
+    while (isdigit(*++p)) {}
+    t.type = TOK.Number;
+    t.end = p;
+  }
+
   uint decodeUTF()
   {
     assert(*p & 128);
--- a/trunk/src/Token.d	Sat Jun 23 13:14:05 2007 +0000
+++ b/trunk/src/Token.d	Sat Jun 23 14:11:01 2007 +0000
@@ -18,6 +18,7 @@
   String,
   Character,
   DivisionAssign,
+  Number,
   EOF
 }
 
--- a/trunk/src/main.d	Sat Jun 23 13:14:05 2007 +0000
+++ b/trunk/src/main.d	Sat Jun 23 14:11:01 2007 +0000
@@ -58,6 +58,9 @@
       case TOK.DivisionAssign:
         writef("<op>%s</op>", span);
       break;
+      case TOK.Number:
+        writef("<n>%s</n>", span);
+      break;
       default:
     }
     end = token.end;