diff --git a/lld/ELF/LinkerScript.cpp b/lld/ELF/LinkerScript.cpp
index f43f99d..7cec67a 100644
--- a/lld/ELF/LinkerScript.cpp
+++ b/lld/ELF/LinkerScript.cpp
@@ -85,7 +85,20 @@
 class elf2::ScriptParser {
 public:
   ScriptParser(BumpPtrAllocator *A, StringRef S, bool B)
-      : Saver(*A), Tokens(tokenize(S)), IsUnderSysroot(B) {}
+      : Saver(*A), Tokens(tokenize(S)), IsUnderSysroot(B) {
+    Cmd["ENTRY"] = &ScriptParser::readEntry;
+    Cmd["EXTERN"] = &ScriptParser::readExtern;
+    Cmd["GROUP"] = &ScriptParser::readGroup;
+    Cmd["INCLUDE"] = &ScriptParser::readInclude;
+    Cmd["INPUT"] = &ScriptParser::readGroup;
+    Cmd["OUTPUT"] = &ScriptParser::readOutput;
+    Cmd["OUTPUT_ARCH"] = &ScriptParser::readOutputArch;
+    Cmd["OUTPUT_FORMAT"] = &ScriptParser::readOutputFormat;
+    Cmd["SEARCH_DIR"] = &ScriptParser::readSearchDir;
+    Cmd["SECTIONS"] = &ScriptParser::readSections;
+    Cmd[";"] = [](ScriptParser &) {};
+  }
+
   void run();
 
 private:
@@ -114,37 +127,21 @@
 
   StringSaver Saver;
   std::vector<StringRef> Tokens;
-  bool Error = false;
+  llvm::StringMap<std::function<void(ScriptParser &)>> Cmd;
   size_t Pos = 0;
   bool IsUnderSysroot;
+  bool Error = false;
 };
 
 void ScriptParser::run() {
   while (!atEOF()) {
     StringRef Tok = next();
-    if (Tok == ";")
-      continue;
-    if (Tok == "ENTRY") {
-      readEntry();
-    } else if (Tok == "EXTERN") {
-      readExtern();
-    } else if (Tok == "GROUP" || Tok == "INPUT") {
-      readGroup();
-    } else if (Tok == "INCLUDE") {
-      readInclude();
-    } else if (Tok == "OUTPUT") {
-      readOutput();
-    } else if (Tok == "OUTPUT_ARCH") {
-      readOutputArch();
-    } else if (Tok == "OUTPUT_FORMAT") {
-      readOutputFormat();
-    } else if (Tok == "SEARCH_DIR") {
-      readSearchDir();
-    } else if (Tok == "SECTIONS") {
-      readSections();
+    auto It = Cmd.find(Tok);
+    if (It != Cmd.end()) {
+      std::function<void(ScriptParser &)> &Handler = It->second;
+      Handler(*this);
     } else {
       setError("unknown directive: " + Tok);
-      return;
     }
   }
 }
