From ba639f2bd05f47e08c12198b7b20cd4cf371b25f Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Tue, 17 Jul 2018 23:08:13 -0700 Subject: Upgraded core code to latest Nomsu verison. --- compatibility/2.nom | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 compatibility/2.nom (limited to 'compatibility') diff --git a/compatibility/2.nom b/compatibility/2.nom new file mode 100644 index 0000000..409f374 --- /dev/null +++ b/compatibility/2.nom @@ -0,0 +1,30 @@ +#!/usr/bin/env nomsu -V2 +use "core" +use "compatibility/compatibility.nom" + +upgrade %tree to "2" as: + unless (%tree is "Action" syntax tree): return + if (all[%tree.stub is "if % % else %", not (%tree.3 is "Var" syntax tree), not (%tree.5 is "Var" syntax tree)]): + %true_body <- (%tree.3 upgraded from "1.2") + unless (%true_body is "Block" syntax tree): + %true_body <- (=lua "Block(\%true_body.source, \%true_body)") + %false_body <- (%tree.5 upgraded from "1.2") + unless (%false_body is "Block" syntax tree): + %false_body <- (=lua "Block(\%false_body.source, \%false_body)") + return (..) + \(if %cond %true_body else %false_body) + ..with vars {..} + cond:%tree.2 upgraded from "1.2", true_body:%true_body, false_body:%false_body + + %need_blocks <- [..] + "if % %", "unless % %", "for % in % %", "for % = % in % %", "repeat while % %" + "repeat % times %", "repeat %", "repeat until % %", "for % in % to % by % %", + "for % in % to % via % %", "for % in % to % %", "for % % in % %", "do %" + "for % in recursive % %", "test %", "with % %", "result of %" + for %n in %need_blocks: + if ((%tree.stub is %n) and (not ((last in %tree) is "Var" syntax tree))): + %bits <- (((% upgraded from "1.2") if (% is syntax tree) else %) for % in %tree) + unless ((last in %bits) is "Block" syntax tree): + %body <- (last in %bits) + %bits.(length of %bits) <- (=lua "Block(\%body.source, \%body)") + return (=lua "Action(\%tree.source, unpack(\%bits))") -- cgit v1.2.3