From 057f5b74ebb7851f6ba824129b3e3316cae23260 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Wed, 6 Feb 2019 15:33:10 -0800 Subject: Moving to better, more centralized versioning system. Now the Nomsu version is just defined as a list at the top of nomsu.moon, and uses X.Y.Z form instead of X.Y.Z.W. Added a ([...], from 2) method and a ([...], up to 5) method, and fixed a few upgrade bugs. --- nomsu_environment.lua | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) (limited to 'nomsu_environment.lua') diff --git a/nomsu_environment.lua b/nomsu_environment.lua index 8573179..08993ea 100644 --- a/nomsu_environment.lua +++ b/nomsu_environment.lua @@ -23,8 +23,7 @@ make_tree = function(tree, userdata) return tree end local Parsers = { } -local max_parser_version = 0 -for version = 1, 999 do +for version = 1, NOMSU_VERSION[1] do local peg_file if package.nomsupath then local pegpath = package.nomsupath:gsub("lib/%?%.nom", "?.peg"):gsub("lib/%?%.lua", "?.peg") @@ -37,10 +36,7 @@ for version = 1, 999 do else peg_file = io.open("nomsu." .. tostring(version) .. ".peg") end - if not (peg_file) then - break - end - max_parser_version = version + assert(peg_file, "No PEG file found for Nomsu version " .. tostring(version)) local peg_contents = peg_file:read('*a') peg_file:close() Parsers[version] = make_parser(peg_contents, make_tree) @@ -87,8 +83,6 @@ _1_as_list = function(x) end local nomsu_environment nomsu_environment = Importer({ - NOMSU_COMPILER_VERSION = 13, - NOMSU_SYNTAX_VERSION = max_parser_version, next = next, unpack = unpack or table.unpack, setmetatable = setmetatable, @@ -171,8 +165,9 @@ nomsu_environment = Importer({ if syntax_version then syntax_version = tonumber(syntax_version:match("^[0-9]+")) end - syntax_version = syntax_version or (version and tonumber(version:match("^[0-9]+")) or max_parser_version) - local parse = Parsers[syntax_version] or Parsers[max_parser_version] + syntax_version = syntax_version or (version and tonumber(version:match("^[0-9]+")) or NOMSU_VERSION[1]) + local parse = Parsers[syntax_version] + assert(parse, "No parser found for Nomsu syntax version " .. tostring(syntax_version)) local tree = parse(nomsu_code, source.filename) if tree.shebang then tree.version = tree.version or tree.shebang:match("nomsu %-V[ ]*([%d.]*)") -- cgit v1.2.3