diff lexer/Lexer.d @ 126:c3b24e7e8cf8

Carius changes to the parser. Parsing attributes, lexing many keywords(not all yet).
author Anders Johnsen <skabet@gmail.com>
date Tue, 27 May 2008 10:32:31 +0200
parents 6a5f745d351c
children 2be29b296081
line wrap: on
line diff
--- a/lexer/Lexer.d	Sun May 25 21:13:56 2008 +0200
+++ b/lexer/Lexer.d	Tue May 27 10:32:31 2008 +0200
@@ -208,20 +208,28 @@
     }
     Token plus() 
     {
+        if(source[position] == '=')
+            return Token(Tok.PlusAssign, Loc(position++ - 1), 2);
         return Token(Tok.Plus, Loc(position - 1), 1);
     }
     Token minus() 
     {
+        if(source[position] == '=')
+            return Token(Tok.MinusAssign, Loc(position++ - 1), 2);
         return Token(Tok.Minus, Loc(position - 1), 1);
     }
     Token star() 
     {
+        if(source[position] == '=')
+            return Token(Tok.StarAssign, Loc(position++ - 1), 2);
         return Token(Tok.Star, Loc(position - 1), 1);
     }
     Token slash()
     {
         switch(source[position])
         {
+            case '=':
+                return Token(Tok.SlashAssign, Loc(position++ - 1), 2);
             case '/':
                 while(getNextChar != CharType.EOF)
                 {
@@ -275,6 +283,8 @@
 
     Token percent() 
     {
+        if(source[position] == '=')
+            return Token(Tok.PercentAssign, Loc(position++ - 1), 2);
         return Token(Tok.Percent, Loc(position - 1), 1);
     }