diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2019-02-06 15:33:10 -0800 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2019-02-06 15:34:00 -0800 |
| commit | 057f5b74ebb7851f6ba824129b3e3316cae23260 (patch) | |
| tree | 2561ca637f5db834cb8f8b82831cbbbbc26d71ae /nomsu_environment.moon | |
| parent | 618e48ad98c0e2b36eb22c75251dddc141d822e6 (diff) | |
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.
Diffstat (limited to 'nomsu_environment.moon')
| -rw-r--r-- | nomsu_environment.moon | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/nomsu_environment.moon b/nomsu_environment.moon index 3b589dd..7e248c9 100644 --- a/nomsu_environment.moon +++ b/nomsu_environment.moon @@ -17,8 +17,7 @@ make_tree = (tree, userdata)-> return tree Parsers = {} -max_parser_version = 0 -for version=1,999 +for version=1,NOMSU_VERSION[1] local peg_file if package.nomsupath pegpath = package.nomsupath\gsub("lib/%?%.nom", "?.peg")\gsub("lib/%?%.lua", "?.peg") @@ -26,8 +25,7 @@ for version=1,999 peg_file = io.open(path) else peg_file = io.open("nomsu.#{version}.peg") - break unless peg_file - max_parser_version = version + assert peg_file, "No PEG file found for Nomsu version #{version}" peg_contents = peg_file\read('*a') peg_file\close! Parsers[version] = make_parser(peg_contents, make_tree) @@ -53,7 +51,6 @@ _1_as_list = (x)-> local nomsu_environment nomsu_environment = Importer{ - NOMSU_COMPILER_VERSION: 13, NOMSU_SYNTAX_VERSION: max_parser_version -- Lua stuff: :next, unpack: unpack or table.unpack, :setmetatable, :rawequal, :getmetatable, :pcall, yield:coroutine.yield, resume:coroutine.resume, coroutine_status_of:coroutine.status, @@ -89,8 +86,9 @@ nomsu_environment = Importer{ version = nomsu_code\match("^#![^\n]*nomsu[ ]+-V[ ]*([0-9.]+)") if syntax_version syntax_version = tonumber(syntax_version\match("^[0-9]+")) - syntax_version or= version and tonumber(version\match("^[0-9]+")) or max_parser_version - parse = Parsers[syntax_version] or Parsers[max_parser_version] + syntax_version or= version and tonumber(version\match("^[0-9]+")) or NOMSU_VERSION[1] + parse = Parsers[syntax_version] + assert parse, "No parser found for Nomsu syntax version #{syntax_version}" tree = parse(nomsu_code, source.filename) if tree.shebang tree.version or= tree.shebang\match("nomsu %-V[ ]*([%d.]*)") |
