Explorar el Código

CppLexer: Add token types for "++", "--"

Nico Weber hace 5 años
padre
commit
c38b8d63f8
Se han modificado 2 ficheros con 28 adiciones y 2 borrados
  1. 26 2
      Libraries/LibGUI/CppLexer.cpp
  2. 2 0
      Libraries/LibGUI/CppLexer.h

+ 26 - 2
Libraries/LibGUI/CppLexer.cpp

@@ -394,11 +394,35 @@ Vector<CppToken> CppLexer::lex()
             continue;
         }
         if (ch == '+') {
-            emit_token_equals(CppToken::Type::Plus, CppToken::Type::PlusEquals);
+            begin_token();
+            consume();
+            if (peek() == '+') {
+                consume();
+                commit_token(CppToken::Type::PlusPlus);
+                continue;
+            }
+            if (peek() == '=') {
+                consume();
+                commit_token(CppToken::Type::PlusEquals);
+                continue;
+            }
+            commit_token(CppToken::Type::Plus);
             continue;
         }
         if (ch == '-') {
-            emit_token_equals(CppToken::Type::Minus, CppToken::Type::MinusEquals);
+            begin_token();
+            consume();
+            if (peek() == '-') {
+                consume();
+                commit_token(CppToken::Type::MinusMinus);
+                continue;
+            }
+            if (peek() == '=') {
+                consume();
+                commit_token(CppToken::Type::MinusEquals);
+                continue;
+            }
+            commit_token(CppToken::Type::Minus);
             continue;
         }
         if (ch == '*') {

+ 2 - 0
Libraries/LibGUI/CppLexer.h

@@ -54,8 +54,10 @@ namespace GUI {
     __TOKEN(LessGreater)           \
     __TOKEN(Comma)                 \
     __TOKEN(Plus)                  \
+    __TOKEN(PlusPlus)              \
     __TOKEN(PlusEquals)            \
     __TOKEN(Minus)                 \
+    __TOKEN(MinusMinus)            \
     __TOKEN(MinusEquals)           \
     __TOKEN(Asterisk)              \
     __TOKEN(AsteriskEquals)        \