Fixed a bug in text escapes in nomsu codegen.
This commit is contained in:
parent
77a338c167
commit
854b2a652f
38
compatibility/compatibility.nom
Normal file
38
compatibility/compatibility.nom
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
#!/usr/bin/env nomsu -V1
|
||||||
|
use "core"
|
||||||
|
use "lib/os.nom"
|
||||||
|
|
||||||
|
%UPGRADES <- {}
|
||||||
|
|
||||||
|
action [upgrade to %version via %upgrade_fn]
|
||||||
|
%UPGRADES.%version <- %upgrade_fn
|
||||||
|
|
||||||
|
parse [upgrade %tree to %version as %body] as
|
||||||
|
upgrade to %version via ([%] -> (% with %tree -> %body))
|
||||||
|
|
||||||
|
action [%tree upgraded from %start_version to %end_version, %tree upgraded to %end_version from %start_version]
|
||||||
|
local action [%ver as list]
|
||||||
|
(% as number) for % where %ver matches "[0-9]+"
|
||||||
|
|
||||||
|
%versions <-: (keys in %UPGRADES) sorted by % -> (% as list)
|
||||||
|
for %ver in %versions
|
||||||
|
if: (%ver as list) <= (%start_version as list)
|
||||||
|
do next %ver
|
||||||
|
if: (%ver as list) > (%end_version as list)
|
||||||
|
stop %ver
|
||||||
|
%tree <- (call %UPGRADES.%ver with [%tree])
|
||||||
|
return %tree
|
||||||
|
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
parse [%tree upgraded from %start_version] as: %tree upgraded from %start_version to (Nomsu version)
|
||||||
|
parse [%tree upgraded to %end_version] as: %tree upgraded from %tree.version to %end_version
|
||||||
|
parse [%tree upgraded] as: %tree upgraded from %tree.version to (Nomsu version)
|
||||||
|
|
||||||
|
action [use %path from version %version]
|
||||||
|
for file %filename in %path
|
||||||
|
if (=lua "LOADED[\%filename]")
|
||||||
|
do next %filename
|
||||||
|
%file <-: read file %filename
|
||||||
|
%tree <-: parse %file from %filename
|
||||||
|
%tree <-: upgrade %tree from %version
|
||||||
|
run tree %tree
|
@ -962,6 +962,7 @@ do
|
|||||||
if j > 1 then
|
if j > 1 then
|
||||||
nomsu:append("\n")
|
nomsu:append("\n")
|
||||||
end
|
end
|
||||||
|
line = gsub(line, "\\", "\\\\")
|
||||||
if #line > 1.25 * MAX_LINE then
|
if #line > 1.25 * MAX_LINE then
|
||||||
local remainder = line
|
local remainder = line
|
||||||
while #remainder > 0 do
|
while #remainder > 0 do
|
||||||
|
@ -634,6 +634,7 @@ with NomsuCompiler
|
|||||||
bit_lines = files.get_lines(bit)
|
bit_lines = files.get_lines(bit)
|
||||||
for j, line in ipairs bit_lines
|
for j, line in ipairs bit_lines
|
||||||
if j > 1 then nomsu\append "\n"
|
if j > 1 then nomsu\append "\n"
|
||||||
|
line = gsub(line, "\\", "\\\\")
|
||||||
if #line > 1.25*MAX_LINE
|
if #line > 1.25*MAX_LINE
|
||||||
remainder = line
|
remainder = line
|
||||||
while #remainder > 0
|
while #remainder > 0
|
||||||
|
6
tools/autoformat.nom
Normal file
6
tools/autoformat.nom
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
use "core"
|
||||||
|
use "lib/os.nom"
|
||||||
|
|
||||||
|
for %path in (=lua "arg"):
|
||||||
|
for file %filename in %path:
|
||||||
|
say ((parse (read file %filename) from %filename) as nomsu)
|
10
tools/upgrade.nom
Normal file
10
tools/upgrade.nom
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
use "core"
|
||||||
|
use "compatibility"
|
||||||
|
use "lib/os.nom"
|
||||||
|
|
||||||
|
for %path in (=lua "arg"):
|
||||||
|
for file %filename in %path:
|
||||||
|
%tree <- (parse (read file %filename) from %filename)
|
||||||
|
%tree <- (%tree upgraded from %tree.version to (Nomsu version))
|
||||||
|
say "#!/usr/bin/env nomsu -V\(Nomsu version)\n\(%tree as nomsu)"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user