mirror of
https://github.com/Reuh/anselme.git
synced 2025-10-27 16:49:31 +00:00
LuaJIT compatibility
Spoiler alert: Anselme run ~1.5x slower in LuaJIT than Lua 5.3/5.4. I didn't expected LuaJIT to be able to optimize anything with my super performant and cache friendly AST walker interpreter, but being this much slower is kinda impressive.
This commit is contained in:
parent
82ce53be83
commit
809613ef8b
8 changed files with 27 additions and 6 deletions
21
anselme.lua
21
anselme.lua
|
|
@ -43,11 +43,16 @@
|
|||
-- end
|
||||
-- ```
|
||||
|
||||
local parser = require("parser")
|
||||
local State = require("state.State")
|
||||
require("ast.abstract.Node"):_i_hate_cycles()
|
||||
-- LuaJIT compatibility
|
||||
-- TODO: too heavyhanded
|
||||
if _VERSION == "Lua 5.1" then
|
||||
package.path = "./?/init.lua;" .. package.path
|
||||
table.unpack = unpack
|
||||
end
|
||||
|
||||
return {
|
||||
local parser, State
|
||||
|
||||
local anselme = {
|
||||
--- Global version string. Follow semver.
|
||||
version = "2.0.0-alpha",
|
||||
|
||||
|
|
@ -78,3 +83,11 @@ return {
|
|||
return State:new()
|
||||
end,
|
||||
}
|
||||
|
||||
package.loaded[...] = anselme
|
||||
|
||||
parser = require("parser")
|
||||
State = require("state.State")
|
||||
require("ast.abstract.Node"):_i_hate_cycles()
|
||||
|
||||
return anselme
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
local class = require("class")
|
||||
local fmt = require("common").fmt
|
||||
local binser = require("lib.binser")
|
||||
local utf8 = utf8 or require("lua-utf8")
|
||||
|
||||
-- NODES SHOULD BE IMMUTABLE AFTER CREATION IF POSSIBLE!
|
||||
-- i don't think i actually rely on this behavior for anything but it makes me feel better about life in general
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@
|
|||
-- Behold! A documentation generator that doesn't try to be smart!
|
||||
-- Call this from the root anselme directory: `lua doc/gendocs.lua`
|
||||
|
||||
local utf8 = utf8 or require("lua-utf8")
|
||||
|
||||
local files = {
|
||||
"doc/api.md"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
local class = require("class")
|
||||
local utf8 = utf8 or require("lua-utf8")
|
||||
|
||||
local Source
|
||||
Source = class {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
--- transform raw code string into a nested tree of lines
|
||||
|
||||
local utf8 = utf8 or require("lua-utf8")
|
||||
|
||||
local Source = require("parser.Source")
|
||||
|
||||
local function indented_to_tree(indented)
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ comment = primary {
|
|||
subcomment, rem = comment:parse(source, rem, limit_pattern)
|
||||
|
||||
table.insert(content_list, "((")
|
||||
for _, c in ipairs(subcomment) do table.insert(content_list, c) end
|
||||
table.insert(content_list, subcomment)
|
||||
table.insert(content_list, "))")
|
||||
-- no end token after the comment
|
||||
elseif not rem:match("^%)%)") then
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
# Anselme
|
||||
|
||||
The overengineered dialog scripting system in pure Lua.
|
||||
|
||||
Supported: Lua 5.4, Lua 5.3, LuaJIT (LuaJIT requires the utf8 module: `luarocks --lua-version=5.1 install luautf8`).
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ return {
|
|||
{ "_-_", "(a::number, b::number)", function(state, a, b) return Number:new(a.number - b.number) end },
|
||||
{ "_*_", "(a::number, b::number)", function(state, a, b) return Number:new(a.number * b.number) end },
|
||||
{ "_/_", "(a::number, b::number)", function(state, a, b) return Number:new(a.number / b.number) end },
|
||||
{ "_//_", "(a::number, b::number)", function(state, a, b) return Number:new(a.number // b.number) end },
|
||||
{ "_//_", "(a::number, b::number)", function(state, a, b) return Number:new(math.floor(a.number / b.number)) end },
|
||||
{ "_%_", "(a::number, b::number)", function(state, a, b) return Number:new(a.number % b.number) end },
|
||||
{ "_^_", "(a::number, b::number)", function(state, a, b) return Number:new(a.number ^ b.number) end },
|
||||
{ "-_", "(a::number)", function(state, a) return Number:new(-a.number) end },
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue