Fixed a bug in text escapes in nomsu codegen.

This commit is contained in:
Bruce Hill 2018-07-17 17:53:07 -07:00
parent 77a338c167
commit 854b2a652f
5 changed files with 56 additions and 0 deletions

View 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

View File

@ -962,6 +962,7 @@ do
if j > 1 then
nomsu:append("\n")
end
line = gsub(line, "\\", "\\\\")
if #line > 1.25 * MAX_LINE then
local remainder = line
while #remainder > 0 do

View File

@ -634,6 +634,7 @@ with NomsuCompiler
bit_lines = files.get_lines(bit)
for j, line in ipairs bit_lines
if j > 1 then nomsu\append "\n"
line = gsub(line, "\\", "\\\\")
if #line > 1.25*MAX_LINE
remainder = line
while #remainder > 0

6
tools/autoformat.nom Normal file
View 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
View 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)"