local _module_0 = { } local p, to_lua do local _obj_0 = require("yue") p, to_lua = _obj_0.p, _obj_0.to_lua end local inventory = { equipment = { "sword", "shield" }, items = { { name = "potion", count = 10 }, { name = "bread", count = 3 } } } print(reduce(filter(map({ 1, 2, 3 }, function(x) return x * 2 end), function(x) return x > 4 end), 0, function(a, b) return a + b end)) local apple = setmetatable({ size = 15, }, { __index = { color = 0x00ffff } }) if (getmetatable(apple) ~= nil) then p(apple.size, apple.color, getmetatable(apple).__index) end local _ud83c_udf1b = "ζœˆδΉ‹θ„šζœ¬" _module_0["πŸŒ›"] = _ud83c_udf1b return _module_0 local area = 6.2831853071796 * 5 print('hello world') do assert(item ~= nil) end local value = item if (f1() and f2() and f3()) then print("OK") end do local funcA funcA = function() end end local funcA funcA = function() return "fail to assign to the Yue macro defined variable" end do local function funcB() end end local funcB funcB = function() return "fail to assign to the Lua macro defined variable" end do -- raw Lua codes insertion if cond then print("output") end end print("yuescript") print(3) print("Valid enum type:", "Static") if tb ~= nil then tb:func() end if tb ~= nil then tb:func() end print(1 < 2 and 2 <= 2 and 2 < 3 and 3 == 3 and 3 > 2 and 2 >= 1 and 1 == 1 and 1 < 3 and 3 ~= 5) local a = 5 print(1 <= a and a <= 10) local v v = function(x) print(x) return x end print((function() local _cond_0 = v(2) if not (v(1) < _cond_0) then return false else return _cond_0 <= v(3) end end)()) print((function() local _cond_0 = v(2) if not (v(1) > _cond_0) then return false else return _cond_0 <= v(3) end end)()) local tab = { } tab[#tab + 1] = "Value" local parts = { "shoulders", "knees" } local lyrics do local _tab_0 = { "head" } local _idx_0 = 1 for _key_0, _value_0 in pairs(parts) do if _idx_0 == _key_0 then _tab_0[#_tab_0 + 1] = _value_0 _idx_0 = _idx_0 + 1 else _tab_0[_key_0] = _value_0 end end _tab_0[#_tab_0 + 1] = "and" _tab_0[#_tab_0 + 1] = "toes" lyrics = _tab_0 end local copy do local _tab_0 = { } local _idx_0 = 1 for _key_0, _value_0 in pairs(other) do if _idx_0 == _key_0 then _tab_0[#_tab_0 + 1] = _value_0 _idx_0 = _idx_0 + 1 else _tab_0[_key_0] = _value_0 end end copy = _tab_0 end local a = { 1, 2, 3, x = 1 } local b = { 4, 5, y = 1 } local merge local _tab_0 = { } local _idx_0 = 1 for _key_0, _value_0 in pairs(a) do if _idx_0 == _key_0 then _tab_0[#_tab_0 + 1] = _value_0 _idx_0 = _idx_0 + 1 else _tab_0[_key_0] = _value_0 end end local _idx_1 = 1 for _key_0, _value_0 in pairs(b) do if _idx_1 == _key_0 then _tab_0[#_tab_0 + 1] = _value_0 _idx_1 = _idx_1 + 1 else _tab_0[_key_0] = _value_0 end end merge = _tab_0 local mt = { } local add add = function(self, right) return setmetatable({ value = self.value + right.value }, mt) end mt.__add = add local a = setmetatable({ value = 1 }, mt) local b = setmetatable({ value = 2 }, { __add = add }) local c = setmetatable({ value = 3 }, { __add = mt.__add }) local d = a + b + c print(d.value) local _ = setmetatable({ }, { __close = function() return print("out of scope") end }) local tb = setmetatable({ }, { ["value"] = 123 }) getmetatable(tb).__index = getmetatable(tb) print(tb.value) setmetatable(tb, { __index = { item = "hello" } }) print(tb.item) local item, new, close, getter do local _obj_0 = tb item, new = _obj_0[1], _obj_0.new do local _obj_1 = getmetatable(_obj_0) close, getter = _obj_1.__close, _obj_1.__index end end print(item, new, close, getter) do local _obj_0 = func if _obj_0 ~= nil then _obj_0() end end print((function() local _obj_0 = abc if _obj_0 ~= nil then local _obj_1 = _obj_0["hello world"] if _obj_1 ~= nil then return _obj_1.xyz end return nil end return nil end)()) local x do local _obj_0 = tab if _obj_0 ~= nil then x = _obj_0.value end end local len = (function() local _obj_0 = utf8 if _obj_0 ~= nil then return _obj_0.len end return nil end)() or (function() local _obj_0 = string if _obj_0 ~= nil then return _obj_0.len end return nil end)() or function(o) return #o end if print and (x ~= nil) then print(x) end local _with_0 = io.open("test.txt", "w") if _with_0 ~= nil then _with_0:write("hello") _with_0:close() end print("hello") print(1, 2) print(1, 2, 3) print(render(emit(parse(extract(readFile("example.txt"), language, { }), language)))) local a, b, c, d if b ~= nil then a = b else if c ~= nil then a = c else a = d end end func((function() if a ~= nil then return a else return { } end end)()) if a == nil then a = false end local list = { 1, 2, 3 } func({ 1, 2, 3 }) local tb = { name = "abc", values = { "a", "b", "c" }, objects = { { name = "a", value = 1, func = function(self) return self.value + 1 end, tb = { fieldA = 1 } }, { name = "b", value = 2, func = function(self) return self.value + 2 end, tb = { } } } } do local insert, concat = table.insert, table.concat local C, Ct, Cmt do local _obj_0 = require("lpeg") C, Ct, Cmt = _obj_0.C, _obj_0.Ct, _obj_0.Cmt end local x, y, z do local _obj_0 = require('mymodule') x, y, z = _obj_0.x, _obj_0.y, _obj_0.z end local a, b, c local _obj_0 = require('module') a, b, c = _obj_0.a, _obj_0.b, _obj_0.c end do local module = require('module') local module_x = require('module_x') local d_a_s_h_e_s = require("d-a-s-h-e-s") local part = require("module.part") end do local PlayerModule = require("player") local C, Ct, Cmt do local _obj_0 = require("lpeg") C, Ct, Cmt = _obj_0.C, _obj_0.Ct, _obj_0.Cmt end local one, two, ch local _obj_0 = require("export") one, two, ch = _obj_0[1], _obj_0[2], _obj_0.Something.umm[1] end local _module_0 = { } local a, b, c = 1, 2, 3 _module_0["a"], _module_0["b"], _module_0["c"] = a, b, c local cool = "cat" _module_0["cool"] = cool local What if this then What = "abc" else What = "def" end _module_0["What"] = What local y y = function() local hallo = 3434 end _module_0["y"] = y local Something local _class_0 local _base_0 = { umm = "cool" } if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function() end, __base = _base_0, __name = "Something" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 Something = _class_0 _module_0["Something"] = Something return _module_0 local _module_0 = { } local loadstring, tolua do local _obj_0 = yue loadstring, tolua = _obj_0.loadstring, _obj_0.to_lua end _module_0["loadstring"], _module_0["tolua"] = loadstring, tolua local fieldA = tb.itemA.fieldA if fieldA == nil then fieldA = 'default' end _module_0["fieldA"] = fieldA return _module_0 local _module_0 = setmetatable({ }, { }) _module_0.itemA = tb getmetatable(_module_0).__index = items _module_0["a-b-c"] = 123 return _module_0 local _module_0 = { } local d, e, f = 3, 2, 1 _module_0[#_module_0 + 1] = d _module_0[#_module_0 + 1] = e _module_0[#_module_0 + 1] = f if this then _module_0[#_module_0 + 1] = 123 else _module_0[#_module_0 + 1] = 456 end local _with_0 = tmp local j = 2000 _module_0[#_module_0 + 1] = _with_0 return _module_0 local _module_0 = nil _module_0 = function() print("hello") return 123 end return _module_0 local hello = "world" local a, b, c = 1, 2, 3 hello = 123 local x = 1 x = x + 1 x = x - 1 x = x * 10 x = x / 10 x = x % 10 local s = s .. "world" local arg = arg or "default value" local a = 0 local b = 0 local c = 0 local d = 0 local e = 0 local x = f() local y = x local z = x do local a a = 1 local x, y, z print("forward declare all variables as locals") x = function() return 1 + y + z end y, z = 2, 3 instance = Item:new() end do local X X = 1 local B print("only forward declare upper case variables") local a = 1 B = 2 end do a = 1 print("declare all variables as globals") local x x = function() return 1 + y + z end local y, z = 2, 3 end do X = 1 print("only declare upper case variables as globals") local a = 1 local B = 2 local Temp Temp = "a local value" end local thing = { 1, 2 } local a, b = thing[1], thing[2] print(a, b) local obj = { hello = "world", day = "tuesday", length = 20 } local hello, the_day = obj.hello, obj.day print(hello, the_day) local day = obj.day local obj2 = { numbers = { 1, 2, 3, 4 }, properties = { color = "green", height = 13.5 } } local first, second, color = obj2.numbers[1], obj2.numbers[2], obj2.properties.color print(first, second, color) local first, second, color local _obj_0 = obj2 first, second, color = _obj_0.numbers[1], _obj_0.numbers[2], _obj_0.properties.color local concat, insert local _obj_0 = table concat, insert = _obj_0.concat, _obj_0.insert local mix, max, rand local _obj_0 = math mix, max, rand = _obj_0.mix, _obj_0.max, _obj_0.random local name, job local _obj_0 = person name, job = _obj_0.name, _obj_0.job if name == nil then name = "nameless" end if job == nil then job = "jobless" end local two, four local _obj_0 = items two, four = _obj_0[2], _obj_0[4] local tuples = { { "hello", "world" }, { "egg", "head" } } for _index_0 = 1, #tuples do local _des_0 = tuples[_index_0] local left, right = _des_0[1], _des_0[2] print(left, right) end local user = database.find_user("moon") if user then print(user.name) end local hello = os.getenv("hello") if hello then print("You have hello", hello) else local world = os.getenv("world") if world then print("you have world", world) else print("nothing :(") end end do local success, result = pcall(function() return "get result without problems" end) if success then print(result) end end print("OK") repeat local byte = stream:read_one() if byte then print(byte) else break end until false local list = { 1, 2, 3, 4, 5 } local fn fn = function(ok) return ok, table.unpack(list) end (function(_arg_0, ...) local ok = _arg_0 local count = select('#', ...) local first = select(1, ...) return print(ok, count, first) end)(fn(true)) Rx.Observable.fromRange(1, 8):filter(function(x) return x % 2 == 0 end):concat(Rx.Observable.of('who do we appreciate')):map(function(value) return value .. '!' end):subscribe(print) local str = strA .. strB .. strC func(3000, "192.168.1.1") xpcall(function() return func(1, 2, 3) end, function(err) return print(yue.traceback(err)) end) local success, result = xpcall(function() return func(1, 2, 3) end, function(err) return yue.traceback(err) end) xpcall(function() return func(1, 2, 3) end, function(err) return print(yue.traceback(err)) end) success, result = pcall(function() return func(1, 2, 3) end) pcall(function() print("trying") return func(1, 2, 3) end) success, result = xpcall(function() return func(1, 2, 3) end, function(err) return print(yue.traceback(err)) end) if success then print(result) end local a = 123 local _ = setmetatable({ }, { __close = function() return print("Out of scope.") end }) local a, b, c, d local _obj_0 = tb a, b, c, d = _obj_0.a, _obj_0.b, _obj_0[1], _obj_0[2] local some_string = "Here is a string\n that has a line break in it." print("I am " .. tostring(math.random() * 100) .. "% sure.") local integer = 1000000 local hex = 0xEFBBBF local my_function my_function = function() end my_function() local func_a func_a = function() return print("hello world") end local func_b func_b = function() local value = 100 return print("The value:", value) end func_a() func_b() local sum sum = function(x, y) return print("sum", x + y) end sum(10, 20) print(sum(10, 20)) a(b(c("a", "b", "c"))) print("x:", sum(10, 20), "y:", sum(30, 40)) local sum sum = function(x, y) return x + y end print("The sum is ", sum(10, 20)) local sum sum = function(x, y) return x + y end local mystery mystery = function(x, y) return x + y, x - y end local a, b = mystery(10, 20) local func func = function(self, num) return self.value + num end local my_function my_function = function(name, height) if name == nil then name = "something" end if height == nil then height = 100 end print("Hello I am", name) return print("My height is", height) end local some_args some_args = function(x, y) if x == nil then x = 100 end if y == nil then y = x + 1000 end return print(x + y) end local a = x - 10 local b = x - 10 local c = x(-y) local d = x - z local x = func("hello") + 100 local y = func("hello" + 100) my_func(5, 4, 3, 8, 9, 10) cool_func(1, 2, 3, 4, 5, 6, 7, 8) my_func(5, 6, 7, 6, another_func(6, 7, 8, 9, 1, 2), 5, 4) local x = { 1, 2, 3, 4, a_func(4, 5, 5, 6), 8, 9, 10 } local y = { my_func(1, 2, 3, 4, 5), 5, 6, 7 } if func(1, 2, 3, "hello", "world") then print("hello") print("I am inside if") end if func(1, 2, 3, "hello", "world") then print("hello") print("I am inside if") end f(function() return print("hello") end) f(function(self) return print(self.value) end) map(function(x) return x * 2 end, { 1, 2, 3 }) local result, msg do result, msg = readAsync("filename.txt", function(data) print(data) return processAsync(data, function(info) return check(info) end) end) end print(result, msg) local some_values = { 1, 2, 3, 4 } local some_values = { name = "Bill", age = 200, ["favorite food"] = "rice" } local profile = { height = "4 feet", shoe_size = 13, favorite_foods = { "ice cream", "donuts" } } local values = { 1, 2, 3, 4, 5, 6, 7, 8, name = "superman", occupation = "crime fighting" } my_function({ dance = "Tango", partner = "none" }) local y = { type = "dog", legs = 4, tails = 1 } local tbl = { ["do"] = "something", ["end"] = "hunger" } local hair = "golden" local height = 200 local person = { hair = hair, height = height, shoe_size = 40 } print_table({ hair = hair, height = height }) local t = { [1 + 2] = "hello", ["hello world"] = true } local some_values = { 1, 2, 3, 4 } local list_with_one_element = { 1 } local items = { 1, 2, 3, 4 } local doubled local _accum_0 = { } local _len_0 = 1 for i, item in ipairs(items) do _accum_0[_len_0] = item * 2 _len_0 = _len_0 + 1 end doubled = _accum_0 local iter = ipairs(items) local slice local _accum_0 = { } local _len_0 = 1 for i, item in iter do if i > 1 and i < 3 then _accum_0[_len_0] = item _len_0 = _len_0 + 1 end end slice = _accum_0 local doubled local _accum_0 = { } local _len_0 = 1 local _list_0 = items for _index_0 = 1, #_list_0 do local item = _list_0[_index_0] _accum_0[_len_0] = item * 2 _len_0 = _len_0 + 1 end doubled = _accum_0 local x_coords = { 4, 5, 6, 7 } local y_coords = { 9, 2, 3 } local points local _accum_0 = { } local _len_0 = 1 for _index_0 = 1, #x_coords do local x = x_coords[_index_0] for _index_1 = 1, #y_coords do local y = y_coords[_index_1] _accum_0[_len_0] = { x, y } _len_0 = _len_0 + 1 end end points = _accum_0 local evens local _accum_0 = { } local _len_0 = 1 for i = 1, 100 do if i % 2 == 0 then _accum_0[_len_0] = i _len_0 = _len_0 + 1 end end evens = _accum_0 local thing = { color = "red", name = "fast", width = 123 } local thing_copy local _tbl_0 = { } for k, v in pairs(thing) do _tbl_0[k] = v end thing_copy = _tbl_0 local no_color local _tbl_0 = { } for k, v in pairs(thing) do if k ~= "color" then _tbl_0[k] = v end end no_color = _tbl_0 local numbers = { 1, 2, 3, 4 } local sqrts local _tbl_0 = { } for _index_0 = 1, #numbers do local i = numbers[_index_0] _tbl_0[i] = math.sqrt(i) end sqrts = _tbl_0 local tuples = { { "hello", "world" }, { "foo", "bar" } } local tbl local _tbl_0 = { } for _index_0 = 1, #tuples do local tuple = tuples[_index_0] local _key_0, _val_0 = unpack(tuple) _tbl_0[_key_0] = _val_0 end tbl = _tbl_0 local slice local _accum_0 = { } local _len_0 = 1 local _list_0 = items local _max_0 = 5 for _index_0 = 1, _max_0 < 0 and #_list_0 + _max_0 or _max_0 do local item = _list_0[_index_0] _accum_0[_len_0] = item _len_0 = _len_0 + 1 end slice = _accum_0 local slice local _accum_0 = { } local _len_0 = 1 local _list_0 = items for _index_0 = 2, #_list_0 do local item = _list_0[_index_0] _accum_0[_len_0] = item _len_0 = _len_0 + 1 end slice = _accum_0 local slice local _accum_0 = { } local _len_0 = 1 local _list_0 = items for _index_0 = 1, #_list_0, 2 do local item = _list_0[_index_0] _accum_0[_len_0] = item _len_0 = _len_0 + 1 end slice = _accum_0 for i = 10, 20 do print(i) end for k = 1, 15, 2 do print(k) end for key, value in pairs(object) do print(key, value) end local _list_0 = items local _max_0 = 4 for _index_0 = 2, _max_0 < 0 and #_list_0 + _max_0 or _max_0 do local item = _list_0[_index_0] print(item) end local _list_0 = items for _index_0 = 1, #_list_0 do local item = _list_0[_index_0] print(item) end for j = 1, 10, 3 do print(j) end local doubled_evens local _accum_0 = { } local _len_0 = 1 for i = 1, 20 do if i % 2 == 0 then _accum_0[_len_0] = i * 2 else _accum_0[_len_0] = i end _len_0 = _len_0 + 1 end doubled_evens = _accum_0 local func_a func_a = function() for i = 1, 10 do print(i) end end local func_b func_b = function() local _accum_0 = { } local _len_0 = 1 for i = 1, 10 do _accum_0[_len_0] = i _len_0 = _len_0 + 1 end return _accum_0 end print(func_a()) print(func_b()) local i = 10 repeat print(i) i = i - 1 until i == 0 local i = 10 while i > 0 do print(i) i = i - 1 end while running == true do my_function() end local i = 10 while not (i == 0) do print(i) i = i - 1 end while not (running == false) do my_function() end local i = 0 while i < 10 do i = i + 1 if i % 2 == 0 then goto _continue_0 end print(i) ::_continue_0:: end local my_numbers = { 1, 2, 3, 4, 5, 6 } local odds local _accum_0 = { } local _len_0 = 1 for _index_0 = 1, #my_numbers do local x = my_numbers[_index_0] if x % 2 == 1 then goto _continue_0 end _accum_0[_len_0] = x _len_0 = _len_0 + 1 ::_continue_0:: end odds = _accum_0 local have_coins = false if have_coins then print("Got coins") else print("No coins") end local have_coins = false if have_coins then print("Got coins") else print("No coins") end local have_coins = false print((function() if have_coins then return "Got coins" else return "No coins" end end)()) local is_tall is_tall = function(name) if name == "Rob" then return true else return false end end local message if is_tall("Rob") then message = "I am very tall" else message = "I am not so tall" end print(message) if not (os.date("%A") == "Monday") then print("it is not Monday!") end if not (math.random() > 0.1) then print("You're lucky!") end local a = 5 if (1 == a or 3 == a or 5 == a or 7 == a) then print("checking equality with discrete values") end if (function() local _check_0 = list for _index_0 = 1, #_check_0 do if _check_0[_index_0] == a then return true end end return false end)() then print("checking if `a` is in a list") end if not (math.random() > 0.1) then print("You're lucky!") end if name == "Rob" then print("hello world") end local _list_0 = items for _index_0 = 1, #_list_0 do local item = _list_0[_index_0] print("item: ", item) end while game:isRunning() do game:update() end while not reader:eof() do reader:parse_line() end local name = "Dan" if "Robert" == name then print("You are Robert") elseif "Dan" == name or "Daniel" == name then print("Your name, it's Dan") else print("I don't know about your name") end local b = 1 local next_number if 1 == b then next_number = 2 elseif 2 == b then next_number = 3 else next_number = error("can't count that high!") end local msg local _exp_0 = math.random(1, 5) if 1 == _exp_0 then msg = "you are lucky" elseif 2 == _exp_0 then msg = "you are almost lucky" else msg = "not so lucky" end do local _exp_0 = math.random(1, 5) if 1 == _exp_0 then print("you are lucky") else print("not so lucky") end end local _exp_0 = math.random(1, 5) if 1 == _exp_0 then print("you are lucky") else print("not so lucky") end local items = { { x = 100, y = 200 }, { width = 300, height = 400 } } for _index_0 = 1, #items do local item = items[_index_0] local _type_0 = type(item) local _tab_0 = "table" == _type_0 or "userdata" == _type_0 local _match_0 = false if _tab_0 then local x = item.x local y = item.y if x ~= nil and y ~= nil then _match_0 = true print("Vec2 " .. tostring(x) .. ", " .. tostring(y)) end end if not _match_0 then if _tab_0 then local width = item.width local height = item.height if width ~= nil and height ~= nil then print("size " .. tostring(width) .. ", " .. tostring(height)) end end end end local item = { } local x, y = item.pos.x, item.pos.y if x == nil then x = 50 end if y == nil then y = 200 end local _type_0 = type(item) local _tab_0 = "table" == _type_0 or "userdata" == _type_0 if _tab_0 then do local _obj_0 = item.pos local _type_1 = type(_obj_0) if "table" == _type_1 or "userdata" == _type_1 then x = _obj_0.x end end do local _obj_0 = item.pos local _type_1 = type(_obj_0) if "table" == _type_1 or "userdata" == _type_1 then y = _obj_0.y end end if x == nil then x = 50 end if y == nil then y = 200 end print("Vec2 " .. tostring(x) .. ", " .. tostring(y)) end local Inventory local _class_0 local _base_0 = { add_item = function(self, name) if self.items[name] then local _obj_0 = self.items _obj_0[name] = _obj_0[name] + 1 else self.items[name] = 1 end end } if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function(self) self.items = { } end, __base = _base_0, __name = "Inventory" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 Inventory = _class_0 local inv = Inventory() inv:add_item("t-shirt") inv:add_item("pants") local Person do local _class_0 local _base_0 = { clothes = { }, give_item = function(self, name) return table.insert(self.clothes, name) end } if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function() end, __base = _base_0, __name = "Person" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 Person = _class_0 end local a = Person() local b = Person() a:give_item("pants") b:give_item("shirt") local _list_0 = a.clothes for _index_0 = 1, #_list_0 do local item = _list_0[_index_0] print(item) end local Person local _class_0 local _base_0 = { } if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function(self) self.clothes = { } end, __base = _base_0, __name = "Person" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 Person = _class_0 local BackPack local _class_0 local _parent_0 = Inventory local _base_0 = { size = 10, add_item = function(self, name) if #self.items > size then error("backpack is full") end return _class_0.__parent.__base.add_item(self, name) end } for _key_0, _val_0 in pairs(_parent_0.__base) do if _base_0[_key_0] == nil and _key_0:match("^__") and not (_key_0 == "__index" and _val_0 == _parent_0.__base) then _base_0[_key_0] = _val_0 end end if _base_0.__index == nil then _base_0.__index = _base_0 end setmetatable(_base_0, _parent_0.__base) _class_0 = setmetatable({ __init = function(self, ...) return _class_0.__parent.__init(self, ...) end, __base = _base_0, __name = "BackPack", __parent = _parent_0 }, { __index = function(cls, name) local val = rawget(_base_0, name) if val == nil then local parent = rawget(cls, "__parent") if parent then return parent[name] end else return val end end, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 if _parent_0.__inherited then _parent_0.__inherited(_parent_0, _class_0) end BackPack = _class_0 local Shelf do local _class_0 local _base_0 = { } if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function() end, __base = _base_0, __name = "Shelf" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 local self = _class_0; self.__inherited = function(self, child) return print(self.__name, "was inherited by", child.__name) end Shelf = _class_0 end local Cupboard local _class_0 local _parent_0 = Shelf local _base_0 = { } for _key_0, _val_0 in pairs(_parent_0.__base) do if _base_0[_key_0] == nil and _key_0:match("^__") and not (_key_0 == "__index" and _val_0 == _parent_0.__base) then _base_0[_key_0] = _val_0 end end if _base_0.__index == nil then _base_0.__index = _base_0 end setmetatable(_base_0, _parent_0.__base) _class_0 = setmetatable({ __init = function(self, ...) return _class_0.__parent.__init(self, ...) end, __base = _base_0, __name = "Cupboard", __parent = _parent_0 }, { __index = function(cls, name) local val = rawget(_base_0, name) if val == nil then local parent = rawget(cls, "__parent") if parent then return parent[name] end else return val end end, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 if _parent_0.__inherited then _parent_0.__inherited(_parent_0, _class_0) end Cupboard = _class_0 local MyClass local _class_0 local _parent_0 = ParentClass local _base_0 = { a_method = function(self) _class_0.__parent.__base.a_method(self, "hello", "world") _class_0.__parent.a_method(self, "hello", "world") _class_0.__parent.a_method(self, "hello", "world") return assert(_class_0.__parent == ParentClass) end } for _key_0, _val_0 in pairs(_parent_0.__base) do if _base_0[_key_0] == nil and _key_0:match("^__") and not (_key_0 == "__index" and _val_0 == _parent_0.__base) then _base_0[_key_0] = _val_0 end end if _base_0.__index == nil then _base_0.__index = _base_0 end setmetatable(_base_0, _parent_0.__base) _class_0 = setmetatable({ __init = function(self, ...) return _class_0.__parent.__init(self, ...) end, __base = _base_0, __name = "MyClass", __parent = _parent_0 }, { __index = function(cls, name) local val = rawget(_base_0, name) if val == nil then local parent = rawget(cls, "__parent") if parent then return parent[name] end else return val end end, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 if _parent_0.__inherited then _parent_0.__inherited(_parent_0, _class_0) end MyClass = _class_0 local b = BackPack() assert(b.__class == BackPack) print(BackPack.size) print(BackPack.__name) local Things do local _class_0 local _base_0 = { } if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function() end, __base = _base_0, __name = "Things" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 local self = _class_0; self.some_func = function(self) return print("Hello from", self.__name) end Things = _class_0 end Things:some_func() assert(Things().some_func == nil) local Counter do local _class_0 local _base_0 = { } if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function(self) self.__class.count = self.__class.count + 1 end, __base = _base_0, __name = "Counter" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 local self = _class_0; self.count = 0 Counter = _class_0 end Counter() Counter() print(Counter.count) self.__class:hello(1, 2, 3, 4) local Things local _class_0 local _base_0 = { } if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function() end, __base = _base_0, __name = "Things" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 local self = _class_0; self.class_var = "hello world" Things = _class_0 local MoreThings local _class_0 local secret, log local _base_0 = { some_method = function(self) return log("hello world: " .. secret) end } if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function() end, __base = _base_0, __name = "MoreThings" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 local self = _class_0; secret = 123 log = function(msg) return print("LOG:", msg) end MoreThings = _class_0 assert(self == self) assert(self.__class == self.__class) local some_instance_method some_instance_method = function(self, ...) return self.__class(...) end local Something do local _class_0 local _base_0 = { } if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function(self, foo, bar, biz, baz) self.foo = foo self.bar = bar self.__class.biz = biz self.__class.baz = baz end, __base = _base_0, __name = "Something" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 Something = _class_0 end local _class_0 local _base_0 = { } if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function(self, foo, bar, biz, baz) self.foo = foo self.bar = bar self.__class.biz = biz self.__class.baz = baz end, __base = _base_0, __name = "Something" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 Something = _class_0 local new new = function(self, fieldA, fieldB) self.fieldA = fieldA self.fieldB = fieldB return self end local obj = new({ }, 123, "abc") print(obj) local x local Bucket local _class_0 local _base_0 = { drops = 0, add_drop = function(self) self.drops = self.drops + 1 end } if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function() end, __base = _base_0, __name = "Bucket" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 Bucket = _class_0 x = _class_0 local BigBucket do local _class_0 local _parent_0 = Bucket local _base_0 = { add_drop = function(self) self.drops = self.drops + 10 end } for _key_0, _val_0 in pairs(_parent_0.__base) do if _base_0[_key_0] == nil and _key_0:match("^__") and not (_key_0 == "__index" and _val_0 == _parent_0.__base) then _base_0[_key_0] = _val_0 end end if _base_0.__index == nil then _base_0.__index = _base_0 end setmetatable(_base_0, _parent_0.__base) _class_0 = setmetatable({ __init = function(self, ...) return _class_0.__parent.__init(self, ...) end, __base = _base_0, __name = "BigBucket", __parent = _parent_0 }, { __index = function(cls, name) local val = rawget(_base_0, name) if val == nil then local parent = rawget(cls, "__parent") if parent then return parent[name] end else return val end end, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 if _parent_0.__inherited then _parent_0.__inherited(_parent_0, _class_0) end BigBucket = _class_0 end assert(Bucket.__name == "BigBucket") local x local _class_0 local _base_0 = { } if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function() end, __base = _base_0, __name = "x" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 x = _class_0 local MyIndex = { __index = { var = 1 } } local X do local _class_0 local _base_0 = { func = function(self) return print(123) end } local _list_0 = { MyIndex } for _index_0 = 1, #_list_0 do local _item_0 = _list_0[_index_0] local _cls_0, _mixin_0 = (_item_0.__base ~= nil), _item_0.__base or _item_0 for _key_0, _val_0 in pairs(_mixin_0) do if _base_0[_key_0] == nil and (not _cls_0 or not _key_0:match("^__")) then _base_0[_key_0] = _val_0 end end end if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function() end, __base = _base_0, __name = "X" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 X = _class_0 end local x = X() print(x.var) local Y do local _class_0 local _base_0 = { } local _list_0 = { X } for _index_0 = 1, #_list_0 do local _item_0 = _list_0[_index_0] local _cls_0, _mixin_0 = (_item_0.__base ~= nil), _item_0.__base or _item_0 for _key_0, _val_0 in pairs(_mixin_0) do if _base_0[_key_0] == nil and (not _cls_0 or not _key_0:match("^__")) then _base_0[_key_0] = _val_0 end end end if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function() end, __base = _base_0, __name = "Y" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 Y = _class_0 end local y = Y() y:func() assert(y.__class.__parent ~= X) local _with_0 = Person() _with_0.name = "Oswald" _with_0:add_relative(my_dad) _with_0:save() print(_with_0.name) local file local _with_0 = File("favorite_foods.txt") _with_0:set_encoding("utf8") file = _with_0 local create_person create_person = function(name, relatives) local _with_0 = Person() _with_0.name = name for _index_0 = 1, #relatives do local relative = relatives[_index_0] _with_0:add_relative(relative) end return _with_0 end local me = create_person("Leaf", { dad, mother, sister }) local str = "Hello" print("original:", str) print("upper:", str:upper()) local _with_0 = tb _with_0[1] = 1 print(_with_0[2]) do local _with_1 = _with_0[abc] _with_1[3] = _with_1[2]:func() _with_1["key-name"] = value end _with_0[#_with_0 + 1] = "abc" do local var = "hello" print(var) end print(var) local counter do local i = 0 counter = function() i = i + 1 return i end end print(counter()) print(counter()) local tbl = { key = (function() print("assigning key!") return 1234 end)() } local my_object = { value = 1000, write = function(self) return print("the value:", self.value) end } local run_callback run_callback = function(func) print("running callback...") return func() end run_callback(my_object.write) run_callback((function() local _base_0 = my_object local _fn_0 = _base_0.write return _fn_0 and function(...) return _fn_0(_base_0, ...) end end)()) local i = 100 local my_func my_func = function() i = 10 while i > 0 do print(i) i = i - 1 end end my_func() print(i) local i = 100 local my_func my_func = function() local i = "hello" end my_func() print(i) local tmp = 1213 local i, k = 100, 50 local my_func my_func = function(add) local tmp = tmp + add i = i + tmp k = k + tmp end my_func(22) print(i, k) local _module_0 = { } local p, to_lua do local _obj_0 = require("yue") p, to_lua = _obj_0.p, _obj_0.to_lua end local inventory = { equipment = { "sword", "shield" }, items = { { name = "potion", count = 10 }, { name = "bread", count = 3 } } } print(reduce(filter(map({ 1, 2, 3 }, function(x) return x * 2 end), function(x) return x > 4 end), 0, function(a, b) return a + b end)) local apple = setmetatable({ size = 15, }, { __index = { color = 0x00ffff } }) if (getmetatable(apple) ~= nil) then p(apple.size, apple.color, getmetatable(apple).__index) end local _ud83c_udf1b = "ζœˆδΉ‹θ„šζœ¬" _module_0["πŸŒ›"] = _ud83c_udf1b return _module_0 local area = 6.2831853071796 * 5 print('hello world') do assert(item ~= nil) end local value = item if (f1() and f2() and f3()) then print("OK") end do local funcA funcA = function() end end local funcA funcA = function() return "fail to assign to the Yue macro defined variable" end do local function funcB() end end local funcB funcB = function() return "fail to assign to the Lua macro defined variable" end do -- raw Lua codes insertion if cond then print("output") end end print("yuescript") print(3) print("Valid enum type:", "Static") if tb ~= nil then tb:func() end if tb ~= nil then tb:func() end print(1 < 2 and 2 <= 2 and 2 < 3 and 3 == 3 and 3 > 2 and 2 >= 1 and 1 == 1 and 1 < 3 and 3 ~= 5) local a = 5 print(1 <= a and a <= 10) local v v = function(x) print(x) return x end print((function() local _cond_0 = v(2) if not (v(1) < _cond_0) then return false else return _cond_0 <= v(3) end end)()) print((function() local _cond_0 = v(2) if not (v(1) > _cond_0) then return false else return _cond_0 <= v(3) end end)()) local tab = { } tab[#tab + 1] = "Value" local parts = { "shoulders", "knees" } local lyrics do local _tab_0 = { "head" } local _idx_0 = 1 for _key_0, _value_0 in pairs(parts) do if _idx_0 == _key_0 then _tab_0[#_tab_0 + 1] = _value_0 _idx_0 = _idx_0 + 1 else _tab_0[_key_0] = _value_0 end end _tab_0[#_tab_0 + 1] = "and" _tab_0[#_tab_0 + 1] = "toes" lyrics = _tab_0 end local copy do local _tab_0 = { } local _idx_0 = 1 for _key_0, _value_0 in pairs(other) do if _idx_0 == _key_0 then _tab_0[#_tab_0 + 1] = _value_0 _idx_0 = _idx_0 + 1 else _tab_0[_key_0] = _value_0 end end copy = _tab_0 end local a = { 1, 2, 3, x = 1 } local b = { 4, 5, y = 1 } local merge local _tab_0 = { } local _idx_0 = 1 for _key_0, _value_0 in pairs(a) do if _idx_0 == _key_0 then _tab_0[#_tab_0 + 1] = _value_0 _idx_0 = _idx_0 + 1 else _tab_0[_key_0] = _value_0 end end local _idx_1 = 1 for _key_0, _value_0 in pairs(b) do if _idx_1 == _key_0 then _tab_0[#_tab_0 + 1] = _value_0 _idx_1 = _idx_1 + 1 else _tab_0[_key_0] = _value_0 end end merge = _tab_0 local mt = { } local add add = function(self, right) return setmetatable({ value = self.value + right.value }, mt) end mt.__add = add local a = setmetatable({ value = 1 }, mt) local b = setmetatable({ value = 2 }, { __add = add }) local c = setmetatable({ value = 3 }, { __add = mt.__add }) local d = a + b + c print(d.value) local _ = setmetatable({ }, { __close = function() return print("out of scope") end }) local tb = setmetatable({ }, { ["value"] = 123 }) getmetatable(tb).__index = getmetatable(tb) print(tb.value) setmetatable(tb, { __index = { item = "hello" } }) print(tb.item) local item, new, close, getter do local _obj_0 = tb item, new = _obj_0[1], _obj_0.new do local _obj_1 = getmetatable(_obj_0) close, getter = _obj_1.__close, _obj_1.__index end end print(item, new, close, getter) do local _obj_0 = func if _obj_0 ~= nil then _obj_0() end end print((function() local _obj_0 = abc if _obj_0 ~= nil then local _obj_1 = _obj_0["hello world"] if _obj_1 ~= nil then return _obj_1.xyz end return nil end return nil end)()) local x do local _obj_0 = tab if _obj_0 ~= nil then x = _obj_0.value end end local len = (function() local _obj_0 = utf8 if _obj_0 ~= nil then return _obj_0.len end return nil end)() or (function() local _obj_0 = string if _obj_0 ~= nil then return _obj_0.len end return nil end)() or function(o) return #o end if print and (x ~= nil) then print(x) end local _with_0 = io.open("test.txt", "w") if _with_0 ~= nil then _with_0:write("hello") _with_0:close() end print("hello") print(1, 2) print(1, 2, 3) print(render(emit(parse(extract(readFile("example.txt"), language, { }), language)))) local a, b, c, d if b ~= nil then a = b else if c ~= nil then a = c else a = d end end func((function() if a ~= nil then return a else return { } end end)()) if a == nil then a = false end local list = { 1, 2, 3 } func({ 1, 2, 3 }) local tb = { name = "abc", values = { "a", "b", "c" }, objects = { { name = "a", value = 1, func = function(self) return self.value + 1 end, tb = { fieldA = 1 } }, { name = "b", value = 2, func = function(self) return self.value + 2 end, tb = { } } } } do local insert, concat = table.insert, table.concat local C, Ct, Cmt do local _obj_0 = require("lpeg") C, Ct, Cmt = _obj_0.C, _obj_0.Ct, _obj_0.Cmt end local x, y, z do local _obj_0 = require('mymodule') x, y, z = _obj_0.x, _obj_0.y, _obj_0.z end local a, b, c local _obj_0 = require('module') a, b, c = _obj_0.a, _obj_0.b, _obj_0.c end do local module = require('module') local module_x = require('module_x') local d_a_s_h_e_s = require("d-a-s-h-e-s") local part = require("module.part") end do local PlayerModule = require("player") local C, Ct, Cmt do local _obj_0 = require("lpeg") C, Ct, Cmt = _obj_0.C, _obj_0.Ct, _obj_0.Cmt end local one, two, ch local _obj_0 = require("export") one, two, ch = _obj_0[1], _obj_0[2], _obj_0.Something.umm[1] end local _module_0 = { } local a, b, c = 1, 2, 3 _module_0["a"], _module_0["b"], _module_0["c"] = a, b, c local cool = "cat" _module_0["cool"] = cool local What if this then What = "abc" else What = "def" end _module_0["What"] = What local y y = function() local hallo = 3434 end _module_0["y"] = y local Something local _class_0 local _base_0 = { umm = "cool" } if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function() end, __base = _base_0, __name = "Something" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 Something = _class_0 _module_0["Something"] = Something return _module_0 local _module_0 = { } local loadstring, tolua do local _obj_0 = yue loadstring, tolua = _obj_0.loadstring, _obj_0.to_lua end _module_0["loadstring"], _module_0["tolua"] = loadstring, tolua local fieldA = tb.itemA.fieldA if fieldA == nil then fieldA = 'default' end _module_0["fieldA"] = fieldA return _module_0 local _module_0 = setmetatable({ }, { }) _module_0.itemA = tb getmetatable(_module_0).__index = items _module_0["a-b-c"] = 123 return _module_0 local _module_0 = { } local d, e, f = 3, 2, 1 _module_0[#_module_0 + 1] = d _module_0[#_module_0 + 1] = e _module_0[#_module_0 + 1] = f if this then _module_0[#_module_0 + 1] = 123 else _module_0[#_module_0 + 1] = 456 end local _with_0 = tmp local j = 2000 _module_0[#_module_0 + 1] = _with_0 return _module_0 local _module_0 = nil _module_0 = function() print("hello") return 123 end return _module_0 local hello = "world" local a, b, c = 1, 2, 3 hello = 123 local x = 1 x = x + 1 x = x - 1 x = x * 10 x = x / 10 x = x % 10 local s = s .. "world" local arg = arg or "default value" local a = 0 local b = 0 local c = 0 local d = 0 local e = 0 local x = f() local y = x local z = x do local a a = 1 local x, y, z print("forward declare all variables as locals") x = function() return 1 + y + z end y, z = 2, 3 instance = Item:new() end do local X X = 1 local B print("only forward declare upper case variables") local a = 1 B = 2 end do a = 1 print("declare all variables as globals") local x x = function() return 1 + y + z end local y, z = 2, 3 end do X = 1 print("only declare upper case variables as globals") local a = 1 local B = 2 local Temp Temp = "a local value" end local thing = { 1, 2 } local a, b = thing[1], thing[2] print(a, b) local obj = { hello = "world", day = "tuesday", length = 20 } local hello, the_day = obj.hello, obj.day print(hello, the_day) local day = obj.day local obj2 = { numbers = { 1, 2, 3, 4 }, properties = { color = "green", height = 13.5 } } local first, second = obj2.numbers[1], obj2.numbers[2] print(first, second, color) local first, second, color local _obj_0 = obj2 first, second, color = _obj_0.numbers[1], _obj_0.numbers[2], _obj_0.properties.color local concat, insert local _obj_0 = table concat, insert = _obj_0.concat, _obj_0.insert local mix, max, rand local _obj_0 = math mix, max, rand = _obj_0.mix, _obj_0.max, _obj_0.random local name, job local _obj_0 = person name, job = _obj_0.name, _obj_0.job if name == nil then name = "nameless" end if job == nil then job = "jobless" end local two, four local _obj_0 = items two, four = _obj_0[2], _obj_0[4] local tuples = { { "hello", "world" }, { "egg", "head" } } for _index_0 = 1, #tuples do local _des_0 = tuples[_index_0] local left, right = _des_0[1], _des_0[2] print(left, right) end local user = database.find_user("moon") if user then print(user.name) end local hello = os.getenv("hello") if hello then print("You have hello", hello) else local world = os.getenv("world") if world then print("you have world", world) else print("nothing :(") end end do local success, result = pcall(function() return "get result without problems" end) if success then print(result) end end print("OK") repeat local byte = stream:read_one() if byte then print(byte) else break end until false local list = { 1, 2, 3, 4, 5 } local fn fn = function(ok) return ok, table.unpack(list) end (function(_arg_0, ...) local ok = _arg_0 local count = select('#', ...) local first = select(1, ...) return print(ok, count, first) end)(fn(true)) Rx.Observable.fromRange(1, 8):filter(function(x) return x % 2 == 0 end):concat(Rx.Observable.of('who do we appreciate')):map(function(value) return value .. '!' end):subscribe(print) local str = strA .. strB .. strC func(3000, "192.168.1.1") xpcall(function() return func(1, 2, 3) end, function(err) return print(yue.traceback(err)) end) local success, result = xpcall(function() return func(1, 2, 3) end, function(err) return yue.traceback(err) end) xpcall(function() return func(1, 2, 3) end, function(err) return print(yue.traceback(err)) end) success, result = pcall(function() return func(1, 2, 3) end) pcall(function() print("trying") return func(1, 2, 3) end) success, result = xpcall(function() return func(1, 2, 3) end, function(err) return print(yue.traceback(err)) end) if success then print(result) end local a = 123 local _ = setmetatable({ }, { __close = function() return print("Out of scope.") end }) local a, b, c, d local _obj_0 = tb a, b, c, d = _obj_0.a, _obj_0.b, _obj_0[1], _obj_0[2] local some_string = "Here is a string\n that has a line break in it." print("I am " .. tostring(math.random() * 100) .. "% sure.") local integer = 1000000 local hex = 0xEFBBBF local my_function my_function = function() end my_function() local func_a func_a = function() return print("hello world") end local func_b func_b = function() local value = 100 return print("The value:", value) end func_a() func_b() local sum sum = function(x, y) return print("sum", x + y) end sum(10, 20) print(sum(10, 20)) a(b(c("a", "b", "c"))) print("x:", sum(10, 20), "y:", sum(30, 40)) local sum sum = function(x, y) return x + y end print("The sum is ", sum(10, 20)) local sum sum = function(x, y) return x + y end local mystery mystery = function(x, y) return x + y, x - y end local a, b = mystery(10, 20) local func func = function(self, num) return self.value + num end local my_function my_function = function(name, height) if name == nil then name = "something" end if height == nil then height = 100 end print("Hello I am", name) return print("My height is", height) end local some_args some_args = function(x, y) if x == nil then x = 100 end if y == nil then y = x + 1000 end return print(x + y) end local a = x - 10 local b = x - 10 local c = x(-y) local d = x - z local x = func("hello") + 100 local y = func("hello" + 100) my_func(5, 4, 3, 8, 9, 10) cool_func(1, 2, 3, 4, 5, 6, 7, 8) my_func(5, 6, 7, 6, another_func(6, 7, 8, 9, 1, 2), 5, 4) local x = { 1, 2, 3, 4, a_func(4, 5, 5, 6), 8, 9, 10 } local y = { my_func(1, 2, 3, 4, 5), 5, 6, 7 } if func(1, 2, 3, "hello", "world") then print("hello") print("I am inside if") end if func(1, 2, 3, "hello", "world") then print("hello") print("I am inside if") end f(function() return print("hello") end) f(function(self) return print(self.value) end) map(function(x) return x * 2 end, { 1, 2, 3 }) local result, msg do result, msg = readAsync("filename.txt", function(data) print(data) return processAsync(data, function(info) return check(info) end) end) end print(result, msg) local some_values = { 1, 2, 3, 4 } local some_values = { name = "Bill", age = 200, ["favorite food"] = "rice" } local profile = { height = "4 feet", shoe_size = 13, favorite_foods = { "ice cream", "donuts" } } local values = { 1, 2, 3, 4, 5, 6, 7, 8, name = "superman", occupation = "crime fighting" } my_function({ dance = "Tango", partner = "none" }) local y = { type = "dog", legs = 4, tails = 1 } local tbl = { ["do"] = "something", ["end"] = "hunger" } local hair = "golden" local height = 200 local person = { hair = hair, height = height, shoe_size = 40 } print_table({ hair = hair, height = height }) local t = { [1 + 2] = "hello", ["hello world"] = true } local some_values = { 1, 2, 3, 4 } local list_with_one_element = { 1 } local items = { 1, 2, 3, 4 } local doubled local _accum_0 = { } local _len_0 = 1 for i, item in ipairs(items) do _accum_0[_len_0] = item * 2 _len_0 = _len_0 + 1 end doubled = _accum_0 local iter = ipairs(items) local slice local _accum_0 = { } local _len_0 = 1 for i, item in iter do if i > 1 and i < 3 then _accum_0[_len_0] = item _len_0 = _len_0 + 1 end end slice = _accum_0 local doubled local _accum_0 = { } local _len_0 = 1 local _list_0 = items for _index_0 = 1, #_list_0 do local item = _list_0[_index_0] _accum_0[_len_0] = item * 2 _len_0 = _len_0 + 1 end doubled = _accum_0 local x_coords = { 4, 5, 6, 7 } local y_coords = { 9, 2, 3 } local points local _accum_0 = { } local _len_0 = 1 for _index_0 = 1, #x_coords do local x = x_coords[_index_0] for _index_1 = 1, #y_coords do local y = y_coords[_index_1] _accum_0[_len_0] = { x, y } _len_0 = _len_0 + 1 end end points = _accum_0 local evens local _accum_0 = { } local _len_0 = 1 for i = 1, 100 do if i % 2 == 0 then _accum_0[_len_0] = i _len_0 = _len_0 + 1 end end evens = _accum_0 local thing = { color = "red", name = "fast", width = 123 } local thing_copy local _tbl_0 = { } for k, v in pairs(thing) do _tbl_0[k] = v end thing_copy = _tbl_0 local no_color local _tbl_0 = { } for k, v in pairs(thing) do if k ~= "color" then _tbl_0[k] = v end end no_color = _tbl_0 local numbers = { 1, 2, 3, 4 } local sqrts local _tbl_0 = { } for _index_0 = 1, #numbers do local i = numbers[_index_0] _tbl_0[i] = math.sqrt(i) end sqrts = _tbl_0 local tuples = { { "hello", "world" }, { "foo", "bar" } } local tbl local _tbl_0 = { } for _index_0 = 1, #tuples do local tuple = tuples[_index_0] local _key_0, _val_0 = unpack(tuple) _tbl_0[_key_0] = _val_0 end tbl = _tbl_0 local slice local _accum_0 = { } local _len_0 = 1 local _list_0 = items local _max_0 = 5 for _index_0 = 1, _max_0 < 0 and #_list_0 + _max_0 or _max_0 do local item = _list_0[_index_0] _accum_0[_len_0] = item _len_0 = _len_0 + 1 end slice = _accum_0 local slice local _accum_0 = { } local _len_0 = 1 local _list_0 = items for _index_0 = 2, #_list_0 do local item = _list_0[_index_0] _accum_0[_len_0] = item _len_0 = _len_0 + 1 end slice = _accum_0 local slice local _accum_0 = { } local _len_0 = 1 local _list_0 = items for _index_0 = 1, #_list_0, 2 do local item = _list_0[_index_0] _accum_0[_len_0] = item _len_0 = _len_0 + 1 end slice = _accum_0 for i = 10, 20 do print(i) end for k = 1, 15, 2 do print(k) end for key, value in pairs(object) do print(key, value) end local _list_0 = items local _max_0 = 4 for _index_0 = 2, _max_0 < 0 and #_list_0 + _max_0 or _max_0 do local item = _list_0[_index_0] print(item) end local _list_0 = items for _index_0 = 1, #_list_0 do local item = _list_0[_index_0] print(item) end for j = 1, 10, 3 do print(j) end local doubled_evens local _accum_0 = { } local _len_0 = 1 for i = 1, 20 do if i % 2 == 0 then _accum_0[_len_0] = i * 2 else _accum_0[_len_0] = i end _len_0 = _len_0 + 1 end doubled_evens = _accum_0 local func_a func_a = function() for i = 1, 10 do print(i) end end local func_b func_b = function() local _accum_0 = { } local _len_0 = 1 for i = 1, 10 do _accum_0[_len_0] = i _len_0 = _len_0 + 1 end return _accum_0 end print(func_a()) print(func_b()) local i = 10 repeat print(i) i = i - 1 until i == 0 local i = 10 while i > 0 do print(i) i = i - 1 end while running == true do my_function() end local i = 10 while not (i == 0) do print(i) i = i - 1 end while not (running == false) do my_function() end local i = 0 while i < 10 do i = i + 1 if i % 2 == 0 then goto _continue_0 end print(i) ::_continue_0:: end local my_numbers = { 1, 2, 3, 4, 5, 6 } local odds local _accum_0 = { } local _len_0 = 1 for _index_0 = 1, #my_numbers do local x = my_numbers[_index_0] if x % 2 == 1 then goto _continue_0 end _accum_0[_len_0] = x _len_0 = _len_0 + 1 ::_continue_0:: end odds = _accum_0 local have_coins = false if have_coins then print("Got coins") else print("No coins") end local have_coins = false if have_coins then print("Got coins") else print("No coins") end local have_coins = false print((function() if have_coins then return "Got coins" else return "No coins" end end)()) local is_tall is_tall = function(name) if name == "Rob" then return true else return false end end local message if is_tall("Rob") then message = "I am very tall" else message = "I am not so tall" end print(message) if not (os.date("%A") == "Monday") then print("it is not Monday!") end if not (math.random() > 0.1) then print("You're lucky!") end local a = 5 if (1 == a or 3 == a or 5 == a or 7 == a) then print("checking equality with discrete values") end if (function() local _check_0 = list for _index_0 = 1, #_check_0 do if _check_0[_index_0] == a then return true end end return false end)() then print("checking if `a` is in a list") end if not (math.random() > 0.1) then print("You're lucky!") end if name == "Rob" then print("hello world") end local _list_0 = items for _index_0 = 1, #_list_0 do local item = _list_0[_index_0] print("item: ", item) end while game:isRunning() do game:update() end while not reader:eof() do reader:parse_line() end local name = "Dan" if "Robert" == name then print("You are Robert") elseif "Dan" == name or "Daniel" == name then print("Your name, it's Dan") else print("I don't know about your name") end local b = 1 local next_number if 1 == b then next_number = 2 elseif 2 == b then next_number = 3 else next_number = error("can't count that high!") end local msg local _exp_0 = math.random(1, 5) if 1 == _exp_0 then msg = "you are lucky" elseif 2 == _exp_0 then msg = "you are almost lucky" else msg = "not so lucky" end do local _exp_0 = math.random(1, 5) if 1 == _exp_0 then print("you are lucky") else print("not so lucky") end end local _exp_0 = math.random(1, 5) if 1 == _exp_0 then print("you are lucky") else print("not so lucky") end local items = { { x = 100, y = 200 }, { width = 300, height = 400 } } for _index_0 = 1, #items do local item = items[_index_0] local _type_0 = type(item) local _tab_0 = "table" == _type_0 or "userdata" == _type_0 local _match_0 = false if _tab_0 then local x = item.x local y = item.y if x ~= nil and y ~= nil then _match_0 = true print("Vec2 " .. tostring(x) .. ", " .. tostring(y)) end end if not _match_0 then if _tab_0 then local width = item.width local height = item.height if width ~= nil and height ~= nil then print("size " .. tostring(width) .. ", " .. tostring(height)) end end end end local item = { } local x, y = item.pos.x, item.pos.y if x == nil then x = 50 end if y == nil then y = 200 end local _type_0 = type(item) local _tab_0 = "table" == _type_0 or "userdata" == _type_0 if _tab_0 then do local _obj_0 = item.pos local _type_1 = type(_obj_0) if "table" == _type_1 or "userdata" == _type_1 then x = _obj_0.x end end do local _obj_0 = item.pos local _type_1 = type(_obj_0) if "table" == _type_1 or "userdata" == _type_1 then y = _obj_0.y end end if x == nil then x = 50 end if y == nil then y = 200 end print("Vec2 " .. tostring(x) .. ", " .. tostring(y)) end local Inventory local _class_0 local _base_0 = { add_item = function(self, name) if self.items[name] then local _obj_0 = self.items _obj_0[name] = _obj_0[name] + 1 else self.items[name] = 1 end end } if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function(self) self.items = { } end, __base = _base_0, __name = "Inventory" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 Inventory = _class_0 local inv = Inventory() inv:add_item("t-shirt") inv:add_item("pants") local Person do local _class_0 local _base_0 = { clothes = { }, give_item = function(self, name) return table.insert(self.clothes, name) end } if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function() end, __base = _base_0, __name = "Person" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 Person = _class_0 end local a = Person() local b = Person() a:give_item("pants") b:give_item("shirt") local _list_0 = a.clothes for _index_0 = 1, #_list_0 do local item = _list_0[_index_0] print(item) end local Person local _class_0 local _base_0 = { } if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function(self) self.clothes = { } end, __base = _base_0, __name = "Person" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 Person = _class_0 local BackPack local _class_0 local _parent_0 = Inventory local _base_0 = { size = 10, add_item = function(self, name) if #self.items > size then error("backpack is full") end return _class_0.__parent.__base.add_item(self, name) end } for _key_0, _val_0 in pairs(_parent_0.__base) do if _base_0[_key_0] == nil and _key_0:match("^__") and not (_key_0 == "__index" and _val_0 == _parent_0.__base) then _base_0[_key_0] = _val_0 end end if _base_0.__index == nil then _base_0.__index = _base_0 end setmetatable(_base_0, _parent_0.__base) _class_0 = setmetatable({ __init = function(self, ...) return _class_0.__parent.__init(self, ...) end, __base = _base_0, __name = "BackPack", __parent = _parent_0 }, { __index = function(cls, name) local val = rawget(_base_0, name) if val == nil then local parent = rawget(cls, "__parent") if parent then return parent[name] end else return val end end, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 if _parent_0.__inherited then _parent_0.__inherited(_parent_0, _class_0) end BackPack = _class_0 local Shelf do local _class_0 local _base_0 = { } if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function() end, __base = _base_0, __name = "Shelf" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 local self = _class_0; self.__inherited = function(self, child) return print(self.__name, "was inherited by", child.__name) end Shelf = _class_0 end local Cupboard local _class_0 local _parent_0 = Shelf local _base_0 = { } for _key_0, _val_0 in pairs(_parent_0.__base) do if _base_0[_key_0] == nil and _key_0:match("^__") and not (_key_0 == "__index" and _val_0 == _parent_0.__base) then _base_0[_key_0] = _val_0 end end if _base_0.__index == nil then _base_0.__index = _base_0 end setmetatable(_base_0, _parent_0.__base) _class_0 = setmetatable({ __init = function(self, ...) return _class_0.__parent.__init(self, ...) end, __base = _base_0, __name = "Cupboard", __parent = _parent_0 }, { __index = function(cls, name) local val = rawget(_base_0, name) if val == nil then local parent = rawget(cls, "__parent") if parent then return parent[name] end else return val end end, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 if _parent_0.__inherited then _parent_0.__inherited(_parent_0, _class_0) end Cupboard = _class_0 local MyClass local _class_0 local _parent_0 = ParentClass local _base_0 = { a_method = function(self) _class_0.__parent.__base.a_method(self, "hello", "world") _class_0.__parent.a_method(self, "hello", "world") _class_0.__parent.a_method(self, "hello", "world") return assert(_class_0.__parent == ParentClass) end } for _key_0, _val_0 in pairs(_parent_0.__base) do if _base_0[_key_0] == nil and _key_0:match("^__") and not (_key_0 == "__index" and _val_0 == _parent_0.__base) then _base_0[_key_0] = _val_0 end end if _base_0.__index == nil then _base_0.__index = _base_0 end setmetatable(_base_0, _parent_0.__base) _class_0 = setmetatable({ __init = function(self, ...) return _class_0.__parent.__init(self, ...) end, __base = _base_0, __name = "MyClass", __parent = _parent_0 }, { __index = function(cls, name) local val = rawget(_base_0, name) if val == nil then local parent = rawget(cls, "__parent") if parent then return parent[name] end else return val end end, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 if _parent_0.__inherited then _parent_0.__inherited(_parent_0, _class_0) end MyClass = _class_0 local b = BackPack() assert(b.__class == BackPack) print(BackPack.size) print(BackPack.__name) local Things do local _class_0 local _base_0 = { } if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function() end, __base = _base_0, __name = "Things" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 local self = _class_0; self.some_func = function(self) return print("Hello from", self.__name) end Things = _class_0 end Things:some_func() assert(Things().some_func == nil) local Counter do local _class_0 local _base_0 = { } if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function(self) self.__class.count = self.__class.count + 1 end, __base = _base_0, __name = "Counter" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 local self = _class_0; self.count = 0 Counter = _class_0 end Counter() Counter() print(Counter.count) self.__class:hello(1, 2, 3, 4) local Things local _class_0 local _base_0 = { } if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function() end, __base = _base_0, __name = "Things" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 local self = _class_0; self.class_var = "hello world" Things = _class_0 local MoreThings local _class_0 local secret, log local _base_0 = { some_method = function(self) return log("hello world: " .. secret) end } if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function() end, __base = _base_0, __name = "MoreThings" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 local self = _class_0; secret = 123 log = function(msg) return print("LOG:", msg) end MoreThings = _class_0 assert(self == self) assert(self.__class == self.__class) local some_instance_method some_instance_method = function(self, ...) return self.__class(...) end local Something do local _class_0 local _base_0 = { } if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function(self, foo, bar, biz, baz) self.foo = foo self.bar = bar self.__class.biz = biz self.__class.baz = baz end, __base = _base_0, __name = "Something" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 Something = _class_0 end local _class_0 local _base_0 = { } if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function(self, foo, bar, biz, baz) self.foo = foo self.bar = bar self.__class.biz = biz self.__class.baz = baz end, __base = _base_0, __name = "Something" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 Something = _class_0 local new new = function(self, fieldA, fieldB) self.fieldA = fieldA self.fieldB = fieldB return self end local obj = new({ }, 123, "abc") print(obj) local x local Bucket local _class_0 local _base_0 = { drops = 0, add_drop = function(self) self.drops = self.drops + 1 end } if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function() end, __base = _base_0, __name = "Bucket" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 Bucket = _class_0 x = _class_0 local BigBucket do local _class_0 local _parent_0 = Bucket local _base_0 = { add_drop = function(self) self.drops = self.drops + 10 end } for _key_0, _val_0 in pairs(_parent_0.__base) do if _base_0[_key_0] == nil and _key_0:match("^__") and not (_key_0 == "__index" and _val_0 == _parent_0.__base) then _base_0[_key_0] = _val_0 end end if _base_0.__index == nil then _base_0.__index = _base_0 end setmetatable(_base_0, _parent_0.__base) _class_0 = setmetatable({ __init = function(self, ...) return _class_0.__parent.__init(self, ...) end, __base = _base_0, __name = "BigBucket", __parent = _parent_0 }, { __index = function(cls, name) local val = rawget(_base_0, name) if val == nil then local parent = rawget(cls, "__parent") if parent then return parent[name] end else return val end end, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 if _parent_0.__inherited then _parent_0.__inherited(_parent_0, _class_0) end BigBucket = _class_0 end assert(Bucket.__name == "BigBucket") local x local _class_0 local _base_0 = { } if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function() end, __base = _base_0, __name = "x" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 x = _class_0 local MyIndex = { __index = { var = 1 } } local X do local _class_0 local _base_0 = { func = function(self) return print(123) end } local _list_0 = { MyIndex } for _index_0 = 1, #_list_0 do local _item_0 = _list_0[_index_0] local _cls_0, _mixin_0 = (_item_0.__base ~= nil), _item_0.__base or _item_0 for _key_0, _val_0 in pairs(_mixin_0) do if _base_0[_key_0] == nil and (not _cls_0 or not _key_0:match("^__")) then _base_0[_key_0] = _val_0 end end end if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function() end, __base = _base_0, __name = "X" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 X = _class_0 end local x = X() print(x.var) local Y do local _class_0 local _base_0 = { } local _list_0 = { X } for _index_0 = 1, #_list_0 do local _item_0 = _list_0[_index_0] local _cls_0, _mixin_0 = (_item_0.__base ~= nil), _item_0.__base or _item_0 for _key_0, _val_0 in pairs(_mixin_0) do if _base_0[_key_0] == nil and (not _cls_0 or not _key_0:match("^__")) then _base_0[_key_0] = _val_0 end end end if _base_0.__index == nil then _base_0.__index = _base_0 end _class_0 = setmetatable({ __init = function() end, __base = _base_0, __name = "Y" }, { __index = _base_0, __call = function(cls, ...) local _self_0 = setmetatable({ }, _base_0) cls.__init(_self_0, ...) return _self_0 end }) _base_0.__class = _class_0 Y = _class_0 end local y = Y() y:func() assert(y.__class.__parent ~= X) local _with_0 = Person() _with_0.name = "Oswald" _with_0:add_relative(my_dad) _with_0:save() print(_with_0.name) local file local _with_0 = File("favorite_foods.txt") _with_0:set_encoding("utf8") file = _with_0 local create_person create_person = function(name, relatives) local _with_0 = Person() _with_0.name = name for _index_0 = 1, #relatives do local relative = relatives[_index_0] _with_0:add_relative(relative) end return _with_0 end local me = create_person("Leaf", { dad, mother, sister }) local str = "Hello" print("original:", str) print("upper:", str:upper()) local _with_0 = tb _with_0[1] = 1 print(_with_0[2]) do local _with_1 = _with_0[abc] _with_1[3] = _with_1[2]:func() _with_1["key-name"] = value end _with_0[#_with_0 + 1] = "abc" do local var = "hello" print(var) end print(var) local counter do local i = 0 counter = function() i = i + 1 return i end end print(counter()) print(counter()) local tbl = { key = (function() print("assigning key!") return 1234 end)() } local my_object = { value = 1000, write = function(self) return print("the value:", self.value) end } local run_callback run_callback = function(func) print("running callback...") return func() end run_callback(my_object.write) run_callback((function() local _base_0 = my_object local _fn_0 = _base_0.write return _fn_0 and function(...) return _fn_0(_base_0, ...) end end)()) local i = 100 local my_func my_func = function() i = 10 while i > 0 do print(i) i = i - 1 end end my_func() print(i) local i = 100 local my_func my_func = function() local i = "hello" end my_func() print(i) local tmp = 1213 local i, k = 100, 50 local my_func my_func = function(add) local tmp = tmp + add i = i + tmp k = k + tmp end my_func(22) print(i, k)