blueloveTH 2 years ago
parent
commit
19c0e8cac6
1 changed files with 13 additions and 17 deletions
  1. 13 17
      src/lexer.h

+ 13 - 17
src/lexer.h

@@ -266,24 +266,20 @@ struct Lexer {
         };
         // handle "not in", "is not", "yield from"
         if(!nexts.empty()){
-            switch(nexts.back().type){
-                case TK("not"):
-                    if(type == TK("in")) {
-                        nexts.back().type = TK("not in");
-                        return;
-                    }
-                case TK("is"):
-                    if(type == TK("not")){
-                        nexts.back().type = TK("is not");
-                        return;
-                    }
-                case TK("yield"):
-                    if(type == TK("from")){
-                        nexts.back().type = TK("yield from");
-                        return;
-                    }
-                default: nexts.push_back(token); return;
+            auto& back = nexts.back();
+            if(back.type == TK("not") && type == TK("in")){
+                back.type = TK("not in");
+                return;
+            }
+            if(back.type == TK("is") && type == TK("not")){
+                back.type = TK("is not");
+                return;
+            }
+            if(back.type == TK("yield") && type == TK("from")){
+                back.type = TK("yield from");
+                return;
             }
+            nexts.push_back(token);
         }
     }