From c4b515491a074981023b6f68df620d3f50652dc5 Mon Sep 17 00:00:00 2001
From: Ruben Dahl <dahrub@nxi.no>
Date: Thu, 26 Jan 2023 20:52:43 +0100
Subject: [PATCH] Parsing 95% complete, only missing string parsing

---
 src/lang.cc | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/src/lang.cc b/src/lang.cc
index 7ba88f3..b07568b 100644
--- a/src/lang.cc
+++ b/src/lang.cc
@@ -40,8 +40,6 @@ int parse_line(std::string line, int row) {
   struct parsed_token parsed {
     empty_token, empty_token
   };
-  if (line.length() == 0)
-    return 0;
   std::deque<std::string> tokens;
   int start = 0;
   size_t end = line.find(" ");
@@ -50,6 +48,7 @@ int parse_line(std::string line, int row) {
     start = end + 1;
     end = line.find(" ", start);
   }
+  tokens.push_back(line.substr(start));
   for (std::string &token : tokens) {
     if (token == "//")
       return 0;
@@ -57,9 +56,6 @@ int parse_line(std::string line, int row) {
     try {
       Token curr_token = CV_Tokens.at(token);
       parsed.last_token = parsed.current_token;
-      if (curr_token == parsed.last_token &&
-          curr_token.type == TokenType::SPACE)
-        continue;
       parsed.current_token = curr_token;
       switch (parsed.current_token.type) {
       case TokenType::COLONCOLON: {
@@ -87,6 +83,8 @@ int parse_line(std::string line, int row) {
              ctoken);
         break;
       }
+      default:
+        break;
       }
       switch (parsed.current_token.intrinsic) {
       case Intrinsic::INCLUDE: {
@@ -146,7 +144,7 @@ int parse_line(std::string line, int row) {
       default:
         break;
       }
-    } catch (std::out_of_range &oor) {
+    } catch (std::out_of_range) {
       // this is most likely a variable or a string
       ferr("%s: Invalid token `%s'.\n", here(row, col), ctoken);
     }