p, pn stack

This commit is contained in:
p.kosyh 2009-10-23 11:29:44 +00:00
parent 42bf7f4768
commit a3a55c14ad

View file

@ -4,27 +4,32 @@ stead = {
string = string, string = string,
math = math, math = math,
io = io, io = io,
txt_top = 0,
txt = {},
} }
function pstart() function pstart()
stead.txt = nil stead.txt_top = stead.txt_top + 1;
stead.txt[stead.txt_top] = nil
end end
function pend() function pend()
return stead.txt; local r = stead.txt[stead.txt_top]
stead.txt_top = stead.txt_top - 1;
return r
end end
function p(...) function p(...)
local i local i
for i = 1, stead.table.maxn(arg) do for i = 1, stead.table.maxn(arg) do
stead.txt = par('',stead.txt, arg[i]); stead.txt[stead.txt_top] = par('',stead.txt[stead.txt_top], arg[i]);
end end
stead.txt = cat(stead.txt, ' '); stead.txt[stead.txt_top] = cat(stead.txt[stead.txt_top], ' ');
end end
function pn(...) function pn(...)
p(unpack(arg)); p(unpack(arg));
stead.txt = par('',stead.txt,'^'); stead.txt[stead.txt_top] = par('',stead.txt[stead.txt_top],'^');
end end
-- merge strings with "space" as separator -- merge strings with "space" as separator
@ -557,6 +562,8 @@ function call(v, n, ...)
local a,b = v[n](v, unpack(arg)); local a,b = v[n](v, unpack(arg));
if a == nil and b == nil then if a == nil and b == nil then
return pend(); return pend();
else
pend();
end end
return a,b return a,b
end end