|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
--- flua.lua - top level stuff: compile a demo to an engine file in C
--- and a bytecode file in Nasm.
--
-- Copyright (C) 2001 Eduardo Ochs.
-- Author: Eduardo Ochs <edrx@mat.puc-rio.br>
-- Version: 0.02 (2001apr29).
--
-- This program was copylefted to prevent against patent psychopaths;
-- if you want a version with any other license you'll have to write
-- it yourself. More formally,
--
-- This program is free software; you can redistribute it and/or
-- modify it under the terms of the GNU General Public License as
-- published by the Free Software Foundation; either version 2 of the
-- License, or (at your option) any later version.
-- Flua is an experimental Forth-like language, built on top of Lua, C
-- and Nasm. It is an implementation of the ideas of my (old) "Crim"
-- project.
--
-- Related files:
-- (find-flua "flua-comp.lua")
-- (find-flua "flua-demos.lua")
-- (find-flua "flua-lua.lua")
-- (find-flua "inc.lua")
-- «.command_line» (to "command_line")
DBG = getenv("DBG")
dofile("inc.lua")
dofile("flua-comp.lua")
dofile("flua-prims.lua")
dofile("flua-lua.lua")
-- dofile("flua-demos.lua")
-- (find-flua "inc.lua")
-- (find-flua "flua-comp.lua")
-- (find-flua "flua-prims.lua")
-- (find-flua "flua-lua.lua")
-- (find-flua "flua-demos.lua")
action["%"] = function() tick(getword()) end
action["g%"] = function() gtick(getword()) end
action["\\"] = function() local _; _, _, rest = strfind(rest, "\n(.*)"); end
action["--"] = action["\\"]
action[":"] = function() tick(getword()); f("COL:") end
action["g:"] = function() gtick(getword()); f("COL:") end
action[":RSR"] = function() gtick(getword()); f("RSR:") end
--%%%%%
--%
--% Run the demo selected by arg[2] (if arg[1] is "do_demo(arg[2])")
--%
--%%%%%
function do_demo(demoname)
demodir = ""
enginefile = format("%s%s.engine.c", demodir, demoname)
bytecodefile = format("%s%s.bytecode.asm", demodir, demoname)
Cskelfile = "skel.engine.c"
nasmskelfile = "skel.bytecode.asm"
-- getglobal("flua_" .. demoname)()
px(demoname)
f(readfile(demoname .. ".flua"))
build_engine_strings()
-- dump_engine_strings()
px(enginefile)
process_C_skeleton(Cskelfile, enginefile)
printf("Wrote engine file: %s\n", enginefile)
process_nasm_skeleton(nasmskelfile, bytecodefile)
printf("Wrote bytecode file: %s\n", bytecodefile)
end
-- «command_line» (to ".command_line")
-- (find-flua "Makefile")
-- (find-flua "flua-demos.lua" "flua_demo1")
-- (find-flua "flua-demos.lua" "flua_demo2")
-- (find-flua "flua-demos.lua" "flua_demo3")
-- (find-flua "flua-demos.lua" "flua_demo4")
-- (find-flua "flua-demos.lua" "flua_demo5")
--
px(arg)
dostring(arg[1])
ignore_this = [[
#*
cd ~/LUA/flua-0.03/
lua -f flua.lua 'do_demo(arg[2])' demo1
#*
]]
--
-- Local Variables:
-- coding: no-conversion
-- ee-anchor-format: "«%s»"
-- ee-charset-indicator: "Ñ"
-- End: