Самомодифицируйщися код на lua

Опубликовано в QLua

Пррограммируя на qpile, часто испытывал неудобства от невозможности использования самомодифицирующегося кода. Полгода назад даже просил разработчиков дать такую возможность. Ответ был загадочен Подмигиваю, теперь понятно почему.

 

Пример самомодифицирующегося кода на Lua. Создаём файл calculator-1.lua с таким содержимым:

s = 0 
repeat
f = loadstring('print('..s..')')
if f ~= nil then
status, error = pcall(f)
if status == false then
print('error: '..error)
end -- status == false then
end -- if f ~= nil then
s = io.read()
until s == 'q'

Это калькулятор Смеюсь. Программа считывает из стандартного потока ввода строку, которая должна содержать математическое выражение, превращает ее в функцию, возвращающую результат выражения, и пытается выполнить эту функцию. Выйти из цикла можно, введя "q".

Недостаточно прав для комментирования

Архив QLua