initialize project
This commit is contained in:
commit
00f79af101
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>VenusParser</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.dltk.core.scriptbuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.ldt.nature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -0,0 +1,2 @@
|
|||
Grammar__default_id=lua-5.2
|
||||
eclipse.preferences.version=1
|
|
@ -0,0 +1,55 @@
|
|||
local parser = {}
|
||||
|
||||
local elements = "(%s*%g+)"
|
||||
|
||||
local function parse_element(el,pc)
|
||||
local space = el:match("%s*")
|
||||
local word = el:sub(#space+1)
|
||||
if pc.foreach == 2 then
|
||||
pc.foreach = 3
|
||||
return space.."pairs("..word
|
||||
end
|
||||
if word == "foreach" then
|
||||
pc.foreach = 1
|
||||
return space .. "for"
|
||||
elseif word == "for" then
|
||||
pc.foreach = 0
|
||||
elseif word == "in" then
|
||||
if pc.foreach == 1 then
|
||||
pc.foreach = 2
|
||||
end
|
||||
elseif word == "do" then
|
||||
if pc.foreach == 3 then
|
||||
return ")" .. el
|
||||
end
|
||||
end
|
||||
--print(el)
|
||||
return el
|
||||
end
|
||||
|
||||
local function parse_line(l,pc)
|
||||
local pl = ""
|
||||
for w in l:gmatch(elements) do
|
||||
pl = pl .. parse_element(w,pc)
|
||||
end
|
||||
return pl
|
||||
end
|
||||
|
||||
function parser.loadvenus(file)
|
||||
local fc = ""
|
||||
local pc = {opencurly = {}}
|
||||
for l in io.lines(file) do
|
||||
fc = fc .. parse_line(l,pc) .. "\n"
|
||||
end
|
||||
return loadstring(fc,"@"..file)
|
||||
end
|
||||
|
||||
function parser.dovenus(file)
|
||||
local ff, err = parser.loadvenus(file)
|
||||
if ff == nil then
|
||||
error(err,2)
|
||||
end
|
||||
return ff()
|
||||
end
|
||||
|
||||
return parser
|
|
@ -0,0 +1,3 @@
|
|||
local p = dofile("src/init.lua")
|
||||
|
||||
p.dovenus("src/test.venus")
|
|
@ -0,0 +1,59 @@
|
|||
print("test")
|
||||
|
||||
local testt = {
|
||||
venus = "awesome",
|
||||
"lots of test",1,2,
|
||||
test2 = "hi"
|
||||
}
|
||||
|
||||
for i = 0,5 do
|
||||
print(i)
|
||||
end
|
||||
|
||||
for _,el in pairs(testt) do
|
||||
print(el)
|
||||
end
|
||||
|
||||
foreach i,el in testt do
|
||||
print(i.." = "..el)
|
||||
end
|
||||
|
||||
--[[ coming soon
|
||||
//comment
|
||||
|
||||
fn a()
|
||||
print("function")
|
||||
end
|
||||
|
||||
local i = 0
|
||||
local j = 0
|
||||
|
||||
i = i + 1
|
||||
j = j + 2
|
||||
i++
|
||||
j += 2
|
||||
|
||||
function t() {
|
||||
print("hi")
|
||||
}
|
||||
|
||||
if (true) {
|
||||
print("weewoo")
|
||||
}
|
||||
|
||||
for i = 0, 10 {
|
||||
print(i)
|
||||
}
|
||||
|
||||
function callit(fun,arg)
|
||||
fun(arg)
|
||||
end
|
||||
|
||||
callit(() => {
|
||||
print("testing")
|
||||
})
|
||||
|
||||
callit((t) => {
|
||||
print(t)
|
||||
}, "more test")
|
||||
--]]
|
Loading…
Reference in New Issue