#!/usr/bin/env nomsu -V4.8.10 # This file defines upgrades from Nomsu 1 to Nomsu 2 use "compatibility/compatibility.nom" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ upgrade %tree to "2" as: unless (%tree is "Action" syntax tree): return if (%tree.stub is "if 1 2 else"): %true_body = (%tree.3 upgraded) unless (%true_body is "Block" syntax tree): %true_body = \(: %true_body) %false_body = (%tree.5 upgraded) 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, true_body:%true_body, false_body:%false_body %need_blocks = [..] "if", "unless", "for 1 in", "for 1 = 2 in", "repeat while 1" "repeat 1 times", "repeat", "repeat until 1", "for 1 in 2 to 3 by" "for 1 in 2 to 3 via", "for 1 in 2 to", "for 1 2 in" "do", "for 1 in recursive", "test", "with", "result of" for %n in %need_blocks: if (%tree.stub is %n): %bits = (((% upgraded) if (% is syntax tree) else %) for % in %tree) unless ((%bits::last) is "Block" syntax tree): %body = (%bits::last) %bits.(size of %bits) = (=lua "Block(\%body.source, \%body)") return (=lua "Action(\%tree.source, unpack(\%bits))")