浏览代码

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

Nico Weber 5 年之前
父节点
当前提交
c38b8d63f8
共有 2 个文件被更改,包括 28 次插入2 次删除
  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)        \