changeset 35:c470b9356e35

- Added code for parsing Unordered, UorE, UorG, UorGorE, UorL, UorLorE, NotEqual and Not tokens.
author aziz
date Tue, 26 Jun 2007 07:57:00 +0000
parents 41dad4aef4b1
children 3c7210a722f7
files trunk/src/Lexer.d trunk/src/Token.d trunk/src/main.d
diffstat 3 files changed, 60 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/trunk/src/Lexer.d	Mon Jun 25 19:05:01 2007 +0000
+++ b/trunk/src/Lexer.d	Tue Jun 26 07:57:00 2007 +0000
@@ -390,6 +390,47 @@
 
       switch(c)
       {
+      case '!':
+        c = *++p;
+        switch (c)
+        {
+        case '<':
+          c = *++p;
+          if (c == '>')
+          {
+            if (p[1] == '=') {
+              ++p;
+              t.type = TOK.Unordered;
+            }
+            else
+              t.type = TOK.UorE;
+          }
+          else if (c == '=')
+          {
+            t.type = TOK.UorG;
+          }
+          else {
+            t.type = TOK.UorGorE;
+            goto Lcommon2;
+          }
+          goto Lcommon;
+        case '>':
+          if (p[1] == '=')
+          {
+            ++p;
+            t.type = TOK.UorL;
+          }
+          else
+            t.type = TOK.UorLorE;
+          goto Lcommon;
+        case '=':
+          t.type = TOK.NotEqual;
+          goto Lcommon;
+        default:
+          t.type = TOK.Not;
+          goto Lcommon2;
+        }
+        assert(0);
       case '.':
         if (p[1] == '.')
         {
--- a/trunk/src/Token.d	Mon Jun 25 19:05:01 2007 +0000
+++ b/trunk/src/Token.d	Tue Jun 26 07:57:00 2007 +0000
@@ -27,7 +27,14 @@
 
   Dot, Slice, Ellipses,
 
-  Assign, Equal,
+  Unordered,
+  UorE,
+  UorG,
+  UorGorE,
+  UorL,
+  UorLorE,
+
+  Assign, Equal, NotEqual, Not,
   OrAssign, OrLogical, OrBinary,
   AndAssign, AndLogical, AndBinary,
   PlusAssign, PlusPlus, Plus,
--- a/trunk/src/main.d	Mon Jun 25 19:05:01 2007 +0000
+++ b/trunk/src/main.d	Tue Jun 26 07:57:00 2007 +0000
@@ -52,7 +52,7 @@
       case TOK.Character:
         writef("<cl>%s</cl>", span);
       break;
-      case TOK.Assign, TOK.Equal,
+      case TOK.Assign, TOK.Equal, TOK.Not,
         TOK.OrAssign, TOK.OrBinary,
         TOK.AndAssign, TOK.AndBinary,
         TOK.PlusAssign, TOK.PlusPlus, TOK.Plus,
@@ -61,7 +61,13 @@
         TOK.MulAssign, TOK.Mul,
         TOK.ModAssign, TOK.Mod,
         TOK.XorAssign, TOK.Xor,
-        TOK.CatAssign, TOK.Catenate:
+        TOK.CatAssign, TOK.Catenate,
+        TOK.Unordered,
+        TOK.UorE,
+        TOK.UorG,
+        TOK.UorGorE,
+        TOK.UorL,
+        TOK.UorLorE:
         writef("<op>%s</op>", span);
       break;
       case TOK.AndLogical:
@@ -70,9 +76,9 @@
       case TOK.OrLogical:
         writef("<op>∨</op>");
       break;
-//       case TOK.NotEqual:
-//         writef("<op>≠</op>");
-//       break;
+      case TOK.NotEqual:
+        writef("<op>≠</op>");
+      break;
       case TOK.Number:
         writef("<n>%s</n>", span);
       break;