-- с двойного тире начинается однострочный комментарий
--[[
А если добавить двойные квадратные скобки
получится многострочный комментарий
--]]
----------------------------------------------------
-- 1. Переменные и управляющие конструкции
----------------------------------------------------
num = 42 -- Все числа в Lua представляют из себя числа с плавающей точкой двойной точности (double)
-- Не переживайте, у 64-битных double имеется 52 бита
-- для хранения точных целочисленных (int) значений;
-- для целочисленных значений, которым нужно менее 52 бит, никаких проблем не возникнет
s = 'walternate' --строки неизменны (нельзя переназначать) как в Рython'e
t = "double-quotes are also fine" -- можно использовать и двойные кавычки
u = [[ Double brackets
start and end
multi-line strings.]] -- Двойные квадратные скобки
-- обрамляют многострочные строки (strings)
t = nil -- обнуляет t; В Lua имеется "сборщик мусора"пятница, 15 августа 2014 г.
Шпаргалка по Lua
четверг, 14 августа 2014 г.
Калькулятор на Lua в 30 строк
Захотелось написать зародыш компилятора )))
Интерпретатор:
Интерпретатор:
function oper(src) return src:match'^([-+*/]?)%s*(.*)' end
function number(src) return src:match'^(%d*)%s*(.*)' end
operators = {
{
['+'] = function(a,b) return a+b end,
['-'] = function(a,b) return a-b end
},{
['*'] = function(a,b) return a*b end,
['/'] = function(a,b) return a/b end
}
}
function expr(src, pri)
local a,b,n,r,op
pri = pri or 1
op = operators[pri]
if op then
a, src = expr(src, pri+1)
r, src = oper(src)
while op[r] do
b, src = expr(src, pri+1)
a = op[r](a,b)
r, src = oper(src)
end
return a, r..src
end
r, src = number(src)
if r=='' then error('number expected: '..src) end
return r, src
end
print(expr('2 + 2 * 3')) -- 8В operators операции расположены по приоритетам (низкий в начале). Можно добавлять свои операции.
Подписаться на:
Комментарии (Atom)