Nexus/main.lua
2026-09-02 23:25:46 +00:00

65 lines
1.4 KiB
Lua

local C = 0
local class_registry = {}
local function class()
C = C + 1
class_registry[C] = {}
return C
end
local link = function(a,c,v,b)
if not a[c] then a[c] = {} end
if not b[-c] then b[-c] = {} end
a[c][b] = v
b[-c][a] = v
end
local classes = {}
for character in ("abcdefghijklmnopqrstuvwxyz "):gmatch(".") do
classes[character] = class()
end
classes.next = class()
classes.inp = class()
classes.out = class()
local function l(a,c,v,b)
end
local function r(it)
for class,link in pairs(it) do
for to,value in pairs(link) do
r(to)
if class > 0 then
l(it,class,value,to)
else
l(to,-class,value,it)
end
end
end
end
while true do
local input = io.read()
local command,param = input:match("([^%s]+)(.*)")
local function say(author,text)
local previous
for character in text:gmatch(".") do
if classes[character] then
local it = {}
if previous then
link(previous,classes.next,I,it)
end
link(it,classes.inp,I,{})
link(it,classes[character],I,{})
previous = it
r(it)
end
end
end
(({
["inp"] = function(text)
say(classes.inp,text)
end,
["out"] = function(text)
say(classes.out,text)
end,
["exit"] = function()
os.exit()
end
})[command] or function(param) print("Unexpected command: '"..command.."' for '"..param.."''") end)(param)
end