瀏覽代碼

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

Mostly so that TextEdit doesn't emit logspam when I write `int a = 4`
in a test program.
Nico Weber 5 年之前
父節點
當前提交
96d13f75cf
共有 2 個文件被更改,包括 24 次插入0 次删除
  1. 16 0
      Libraries/LibGUI/CppLexer.cpp
  2. 8 0
      Libraries/LibGUI/CppLexer.h

+ 16 - 0
Libraries/LibGUI/CppLexer.cpp

@@ -346,10 +346,22 @@ Vector<CppToken> CppLexer::lex()
             emit_token(CppToken::Type::Comma);
             continue;
         }
+        if (ch == '+') {
+            emit_token_equals(CppToken::Type::Plus, CppToken::Type::PlusEquals);
+            continue;
+        }
+        if (ch == '-') {
+            emit_token_equals(CppToken::Type::Minus, CppToken::Type::MinusEquals);
+            continue;
+        }
         if (ch == '*') {
             emit_token_equals(CppToken::Type::Asterisk, CppToken::Type::AsteriskEquals);
             continue;
         }
+        if (ch == '=') {
+            emit_token_equals(CppToken::Type::Equals, CppToken::Type::EqualsEquals);
+            continue;
+        }
         if (ch == ';') {
             emit_token(CppToken::Type::Semicolon);
             continue;
@@ -422,6 +434,10 @@ Vector<CppToken> CppLexer::lex()
             commit_token(CppToken::Type::Comment);
             continue;
         }
+        if (ch == '/') {
+            emit_token_equals(CppToken::Type::Slash, CppToken::Type::SlashEquals);
+            continue;
+        }
         if (ch == '"') {
             begin_token();
             consume();

+ 8 - 0
Libraries/LibGUI/CppLexer.h

@@ -44,8 +44,16 @@ namespace GUI {
     __TOKEN(LeftBracket)           \
     __TOKEN(RightBracket)          \
     __TOKEN(Comma)                 \
+    __TOKEN(Plus)                  \
+    __TOKEN(PlusEquals)            \
+    __TOKEN(Minus)                 \
+    __TOKEN(MinusEquals)           \
     __TOKEN(Asterisk)              \
     __TOKEN(AsteriskEquals)        \
+    __TOKEN(Slash)                 \
+    __TOKEN(SlashEquals)           \
+    __TOKEN(Equals)                \
+    __TOKEN(EqualsEquals)          \
     __TOKEN(Semicolon)             \
     __TOKEN(DoubleQuotedString)    \
     __TOKEN(SingleQuotedString)    \