[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: evolutionary programming & Lua
- From: Luiz Henrique de Figueiredo <lhf@...>
- Date: Thu, 19 Aug 1999 10:30:19 -0300 (EST)
And here is some code that converts infix arithmetic expressions into
prefix tables. Here's automatic parsing for you. :-)
The example converts x+y*z into {add,x,{mul,y,z}}.
To use this code with the code I posted earlier, you need to use the
add, sub, etc. functions instead of plain op in arithfb.
Plus you only need the name field for variables, not for subexpressions.
(I should have used tag methods instead of fallbacks, but I had a similar code
already and it's closer to what appears in the SPE paper and the slides.)
--lhf
dofile("setfallback.lua")
function S(a)
if type(a)=="table" then return a.name else return tostring(a) end
end
function arithfb(a,b,op)
return {op,a,b;name="{"..op..","..S(a)..","..S(b).."}"}
end
function create(v)
return setglobal(v,{name=v})
end
setfallback("arith",arithfb)
-- test
create("x") create("y") create("z")
E=x+y*z print(E.name)