-- с двойного тире начинается однострочный комментарий --[[ А если добавить двойные квадратные скобки получится многострочный комментарий --]] ---------------------------------------------------- -- 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)