summary refs log tree commit diff stats
path: root/src/cratera/luatokens.lua
diff options
context:
space:
mode:
authorSoniEx2 <endermoneymod@gmail.com>2024-06-06 03:09:00 -0300
committerSoniEx2 <endermoneymod@gmail.com>2024-06-06 03:09:00 -0300
commitd865925d050f13e1097721d2b1f3ae352b49c484 (patch)
tree05d1c2bd1435571a1c4ae4064b2d50535cc87692 /src/cratera/luatokens.lua
parent1f8140c95ced6b7ce291e16c26c80800fa4f1f9d (diff)
Fix long string parsing
Diffstat (limited to 'src/cratera/luatokens.lua')
-rw-r--r--src/cratera/luatokens.lua11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/cratera/luatokens.lua b/src/cratera/luatokens.lua
index 90d0c61..632cf27 100644
--- a/src/cratera/luatokens.lua
+++ b/src/cratera/luatokens.lua
@@ -1,6 +1,6 @@
 --[[
     This file is part of Cratera Compiler
-    Copyright (C) 2019  Soni L.
+    Copyright (C) 2019, 2024  Soni L.
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU Affero General Public License as published by
@@ -387,7 +387,12 @@ end
 do local tlongstring = {}
     defs.longstring = tlongstring
     do local tllongstring_proper = selfify({[parser.FALLBACK] = "self", ["]"] = function(state, token) state.longstring_close = 0 return "maybe_end" end})
-        tllongstring_proper[1] = false -- placeholder for newline handling
+        tlongstring[1] = false -- first newline is skipped(!)
+        tllongstring_proper[1] = function(state, token, rule)
+            if token == "\n" or token == "\r" then
+                collect_fallback(state, "\n")
+            end
+        end
         tllongstring_proper[2] = collect_fallback
 
         do local tllmaybe_end = selfify({defs = defs}, "maybe_end")
@@ -425,7 +430,7 @@ do local tlongstring = {}
         end
 
         tlongstring.longstring_proper = tllongstring_proper
-        mknewline(tlongstring, 1, tllongstring_proper)
+        mknewline(tllongstring_proper, 1)
         setmetatable(tlongstring, {__index=tllongstring_proper})
     end
 end