aboutsummaryrefslogtreecommitdiff
path: root/nomsu_environment.lua
diff options
context:
space:
mode:
Diffstat (limited to 'nomsu_environment.lua')
-rw-r--r--nomsu_environment.lua15
1 files changed, 5 insertions, 10 deletions
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.]*)")