рдЙрдирдХреЗ рдЬреАрд╡рди рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╕реАрдЦрдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ, рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рдореЗрдВ рдорд╛рд╣рд┐рд░ рд╣реИрдВ рдФрд░ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдмрд╛рдХреА рд▓реЛрдЧ рдЗрд╕рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВред рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░рдгреЛрдВ рд╕реЗред рдХреНрдпрд╛ рдирдИ рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╕реАрдЦрдиреЗ рдореЗрдВ рд╕рдордп рдмрд┐рддрд╛рдирд╛ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИ рдЬрдм рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрд╕ рдХреНрд╖реЗрддреНрд░ рдкрд░ рдлреИрд╕рд▓рд╛ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ? рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЗрд╕рдХреА рд▓рд╛рдЧрдд рдХреНрдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╢рд╛рдпрдж рдХрдИ рд▓реЛрдЧ рдХрд╣реЗрдВрдЧреЗ рдХрд┐ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рди рдореЗрдВ рдореМрд▓рд┐рдХ рдЬреНрдЮрд╛рди рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдФрд░ рдХрд┐рд╕ рднрд╛рд╖рд╛ рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рд╣реИред рдлрд┐рд░ рднреА, рднрд╛рд╖рд╛ рд╕реАрдЦрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдЙрдкрдпреЛрдЧреА рд╣реИред
рд▓реБрдЖред рднрд╛рд╖рд╛ рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЗрддрд┐рд╣рд╛рд╕ред
рднрд╛рд╖рд╛ рд▓реВрдЖ ([рд▓реВрдЖ], рдмрдВрджрд░рдЧрд╛рд╣ред "рдЪрдВрджреНрд░рдорд╛") рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд 1993 рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред рдЗрд╕рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд░реЙрдмрд░реНрдЯреЛ рдпреЗрд░реБрд╢рд▓рдо (рд░реЙрдмрд░реНрдЯреЛ рдЗрдпрд░реНрд▓реБрд╕реАрдорд┐рд╢реА), рд▓реБрдЗрдЬ рд╣реЗрдирд░рд┐рдХ рдбреА рдлрд┐рдЧреБрдПрд░реЗрдбреЛ (рд▓реБрдЗрдЬ рд╣реЗрдирд░рд┐рдХ рдбреА рдлрд┐рдЧреБрдПрд░реЗрдбреЛ) рдФрд░ рд╡рд╛рд▓реНрдбреЗрдорд╛рд░ рд╕реЗрд▓реЗрд╕ (рд╡рд╛рд▓реНрдбреЗрдорд╛рд░ рд╕реЗрд▓реЗрд╕) рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрдмрдХрд┐ рдХрдВрдкреНрдпреВрдЯрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рддрдХрдиреАрдХ (рдЯреЗрдХреЗрдЧреНрд░рдл) рдПрдкрд┐рд╕реНрдХреЛрдкрд▓ рдХреИрдереЛрд▓рд┐рдХ рдпреВрдирд┐рд╡рд░реНрд╕рд┐рдЯреА рдСрдл рд░рд┐рдпреЛ рдбреА рдЬрдиреЗрд░рд┐рдпреЛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдп рдереЗред рдмреНрд░рд╛рдЬреАрд▓ рдореЗрдВ рд░рд┐рдпреЛ рдбреА рдЬрдиреЗрд░рд┐рдпреЛ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп)ред рдпрд╣ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИ рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ-рдЙрдиреНрдореБрдЦ рдЧреБрдг рд╣реИрдВред рд╕реНрдХреАрдо, SNOBOL, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, C / C ++ рдФрд░ рдЕрдиреНрдп рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рддред рдкрд░рд┐рдгрд╛рдо рд╕рд░рд▓ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп, рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИред
рдЗрди рд╡рд░реНрд╖реЛрдВ рдореЗрдВ, Lua рдиреЗ рдПрдХ рдПрдореНрдмреЗрдбреЗрдб рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХреА рд╣реИ: рдХрдИ рдХрд╛рд░реНрдпрдХреНрд░рдо, рд▓реЗрдХрд┐рди рдФрд░ рднреА рдЦреЗрд▓ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рдо (рд╕рдВрд╕реНрдХрд░рдг 7.3.рей рдХреЗ рдмрд╛рдж рд╕реЗ), рд╡рд┐рд╕реНрдХреЙрдиреНрд╕рд┐рди рдХреА рджреБрдирд┐рдпрд╛, рд░рд╛рдЧреНрдирд╛рд░реЛрдХ рдСрдирд▓рд╛рдЗрди рдФрд░ рдХрдИ рдЕрдиреНрдп
рднрд╛рд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛
рдпрд╣ рдпрд╣рд╛рдБ www.lua.ru/doc (rus) рдФрд░ рдпрд╣рд╛рдБ www.lua.org/manual/5.1 ( рд╕рдВрд▓рдЧреНрди ) рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ
рд▓реБрдЖ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
рдЖрдк Lua рдХреЛ luabinaries.sourceforge.net/download.html рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рд▓рд┐рдирдХреНрд╕ рдХреЗ рддрд╣рдд (рд╣рд╛рд▓рд╛рдВрдХрд┐ Ubuntu 10.04 рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддреАрди рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ)
sudo apt-get install lua5.1 sudo apt-get install lua50 sudo apt-get install lua40
рдпрд╛ рд╕реНрд░реЛрдд рд╕реЗ рдирд┐рд░реНрдорд╛рдг (рдкреИрдХреЗрдЬ lua5.1 рдХрд╛ рдирд╛рдо рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдкрдбрд╝рд╛)
cd /tmp wget http://www.lua.org/ftp/lua-5.1.4.tar.gz tar -xf lua-5.1.4.tar.gz cd lua-5.1.4 sudo apt-get install build-essential libreadline5-dev make linux test sudo checkinstall --fstrans=no --install=no --pkgname=lua --pkgversion "5.1.4" --default sudo dpkg -i lua_5.1.4-1_i386.deb lua -v >>> Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
рдорд╣рд╛рди, рдЕрдм рдЖрдк рдордЬрд╝реЗ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдирдорд╕реНрддреЗ рд╡рд┐рд╢реНрд╡!
рднрд╛рд╖рд╛ рд╕реАрдЦрдирд╛ рдХрд╣рд╛рдБ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ? рдирдорд╕реНрддреЗ рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде! рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред рдПрдХ рджреБрднрд╛рд╖рд┐рдпрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдРрд╕реА рдЕрджреНрднреБрдд рдмреНрд░реЗрдирдлрдХ рднрд╛рд╖рд╛ рд╣реИ, рдмрд╣реБрдд рд╕рд░рд▓ рдФрд░ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдорд╕реНрддрд┐рд╖реНрдХ рдХреЛ рдлреИрд▓рд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
рд╣рдордиреЗ рдХрд╛рд░реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ:
- рдПрдХ рдлрд╛рдЗрд▓ рд╕реЗ рдмреНрд░реЗрдирдлрдХ рдХреЛрдб рдкрдврд╝рдирд╛
- рдореВрд▓ рдХреЛрдб рд╕рддреНрдпрд╛рдкрди
- Brainfuck рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди
рдмреНрд░реЗрдирдлрдХ рдХрд╛ рд╡рд░реНрдгрди
рд╢рд╣рд░реА рдореБрд▓рд░ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд "рдХреНрд▓рд╛рд╕рд┐рдХ" рдмреНрд░реЗрдирдлрдХ рдореЗрдВ, рд╕реЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ рдПрдХ рдмрд╛рдЗрдЯ рд╣реИ, рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 30,000 рд╣реИ, рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рдмрд╛рдЗрдЯ-рдмрд╛рдЗрдЯ рд╣реИ, рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 8 рдЯреБрдХрдбрд╝реЗ рд╣реИред рдиреАрдЪреЗ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
- " > " рдЕрдЧрд▓реА рд╕реЗрд▓ рдкрд░ рдЬрд╛рдПрдВ
- " < " рдкрд┐рдЫрд▓реЗ рд╕реЗрд▓ рдкрд░ рдЬрд╛рдПрдВ
- " + " рд╡рд░реНрддрдорд╛рди рд╕реЗрд▓ рдореЗрдВ 1 рд╕реЗ рдореВрд▓реНрдп рдмрдврд╝рд╛рддрд╛ рд╣реИ
- " - " рд╡рд░реНрддрдорд╛рди рд╕реЗрд▓ рдореЗрдВ рдореВрд▓реНрдп 1 рд╕реЗ рдХрдо рдХрд░реЗрдВ
- " ред " рд╡рд░реНрддрдорд╛рди рд╕реЗрд▓ рд╕реЗ рдорд╛рди рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ
- " , " рдмрд╛рд╣рд░ рд╕реЗ рдорд╛рди рджрд░реНрдЬ рдХрд░реЗрдВ рдФрд░ рд╡рд░реНрддрдорд╛рди рд╕реЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ
- " [ " рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рд╕реЗрд▓ рдХрд╛ рдорд╛рди рд╢реВрдиреНрдп рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЯреЗрдХреНрд╕реНрдЯ рдореЗрдВ рд╕реЗрд▓ рдХреЗ рдЕрдиреБрд░реВрдк рдЖрдЧреЗ рдмрдврд╝реЗрдВ " ] " (рдЦрд╛рддреЗ рдореЗрдВ рдШреЛрдВрд╕рд▓реЗ рдХрд╛ рд╢рд┐рдХрд╛рд░ рд╣реЛ рд░рд╣рд╛ рд╣реИ)
- " ] " рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рд╕реЗрд▓ рдХрд╛ рдорд╛рди рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рддреАрдХ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ " [ " (рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП)
рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ
рдЖрдЗрдП рдЫреЛрдЯреЗ рд╢реБрд░реВ рдХрд░реЗрдВ: рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдВ, рдЗрд╕рдореЗрдВ рдмреНрд░реЗрдирдлрдХ.рд▓реБрдЖ рдлрд╝рд╛рдЗрд▓, рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдмрдирд╛рдПрдВ
#!/usr/bin/env lua -- Lua Brainfuck Interpreter Brainfuck = { -- validate source -- Return 1 if closing bracket(s) missing. -- Return 2 if opening bracket(s) missing. -- Return 0 otherwise. validate = function (self, source) return 0 end, -- debug function showError = function (self, errorCode) end, -- brainfuck function brainfuck = function (self, source) end, }
рд╣рдо рд╣реИрд▓реЛ рдлрд╝рд╛рдЗрд▓ рднреА рдмрдирд╛рддреЗ рд╣реИрдВ (рдмреНрд░реЗрдирдлрдХ рдХреЗ рд▓рд┐рдП рдХреЛрдбред рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ! рд╕реНрдХреНрд░реАрди рдкрд░ред рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ)
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
рдЦреИрд░, рдЕрдм рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИред
1. рдПрдХ рдлрд╛рдЗрд▓ рд╕реЗ рдмреНрд░реЗрдирдлрдХ рдХреЛрдб рдкрдврд╝рдирд╛ред
рд╣рдорд╛рд░рд╛ рджреБрднрд╛рд╖рд┐рдпрд╛ рдПрдХ рдлрд╛рдЗрд▓ рд╕реЗ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
./brainfuck.lua hello.b
рдкреНрд░рд▓реЗрдЦрди рд╣рдореЗрдВ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ Lua рдПрдХ arg рд╕рд░рдгреА рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдбрд╛рд▓рддрд╛ рд╣реИ
-- start here if arg[1] then -- read source from file in arg[1] source = io.input(arg[1]):read("*a") -- get error code (0 == no error) errorCode = Brainfuck:validate(source) -- if no error run source else show error if errorCode == 0 then Brainfuck:brainfuck(source) else Brainfuck:showError(errorCode) end else print("Usage: ./brainfuck.lua script") Brainfuck:showError(3) end
2. рдореВрд▓ рдХреЛрдб рд╕рддреНрдпрд╛рдкрди
-- validate source -- Return 1 if closing bracket(s) missing. -- Return 2 if opening bracket(s) missing. -- Return 0 otherwise. validate = function (self, source) local i, errorCode, l = 0, 0, 0 for i = 1, string.len(source), 1 do -- [ 91 if string.byte(source, i) == 91 then l = l + 1 -- ] 93 elseif string.byte(source, i) == 93 then l = l - 1 if l < 0 then return 2 end end end if l > 0 then return 1 elseif l < 0 then return 2 else return 0 end end, -- debug function showError = function (self, errorCode) if errorCode == 1 then print("Error: Closing bracket(s) missing.") elseif errorCode == 2 then print("Error: Opening bracket(s) missing.") elseif errorCode == 3 then print("Error: No source file.") else print("Error: Unknown error code.") end end,
3. рдмреНрд░реЗрдирдлрдХ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди
-- brainfuck function brainfuck = function (self, source) -- memSize: Brainfuck memory size (30k) -- maxVal: Max memory value (255) byte -- mem: Memory table (array) -- pointer: default 0 -- l: default 0. braket level counter local memSize, maxVal, mem, pointer, l = 30000, 255, {}, 0, 0 -- clear memory for i = 0, memSize, 1 do mem[i] = 0 end -- execute program i = 0 while i <= string.len(source) do i = i + 1 -- + 43 C eqv ++(*p); if string.byte(source, i) == 43 then if mem[pointer] < maxVal then mem[pointer] = mem[pointer] + 1 end -- - 45 C eqv --(*p); elseif string.byte(source, i) == 45 then if mem[pointer] > 0 then mem[pointer] = mem[pointer] - 1 end -- , 44 C eqv *p = getchar(); elseif string.byte(source, i) == 44 then mem[pointer] = string.byte(io.stdin:read('*l'), 1) -- . 46 C eqv putchar(*p); elseif string.byte(source, i) == 46 then io.write(string.char(mem[pointer])) -- < 60 C eqv --p; elseif string.byte(source, i) == 60 then pointer = pointer - 1 if pointer < 0 then pointer = 0 end -- > 62 C eqv ++p; elseif string.byte(source, i) == 62 then pointer = pointer + 1 if pointer > memSize then pointer = memSize end -- [ 91 C eqv while (*p) { elseif string.byte(source, i) == 91 then if mem[pointer] == 0 then while (string.byte(source, i) ~= 93) or (l > 0) do i = i + 1 if string.byte(source, i) == 91 then l = l + 1 end if string.byte(source, i) == 93 then l = l - 1 end end end -- ] 93 C eqv } elseif string.byte(source, i) == 93 then if mem[pointer] ~= 0 then while (string.byte(source, i) ~= 91) or (l > 0) do i = i - 1 if string.byte(source, i) == 91 then l = l - 1 end if string.byte(source, i) == 93 then l = l + 1 end end end else -- print("Unknown symbol") -- return end -- print("Debug: l="..l.." cmd="..string.char(string.byte(source, i))) end end,
рд╕рдорд╛рдкреНрдд рд╕рдВрд╕реНрдХрд░рдг
рд╣реЛ рдЧрдпрд╛ред рдЕрдм рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, Lua рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЙрдкрдпреБрдХреНрдд рд╣реИ)
рдореИрдВ рдорд╛рдВрдЧрдкрддреНрд░ рдХреА рдХрдореА рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдВрдЧрддрд╛ рд╣реВрдВред рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЦреЛ рдЧрдпрд╛ред
рдореБрдЭреЗ Lua рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреНрд▓реЙрдЧ рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдЕрд╕рд╛рдорд╛рдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд░реВрдБрдЧрд╛ред
рдпрджрд┐ рд▓реБрдЖ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рд╕рдореБрджрд╛рдп рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реИрдВ, рддреЛ рдореИрдВ рдФрд░ рдЕрдзрд┐рдХ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВ
рдЙрдкрдпреЛрдЧреА рд╕рд╛рд╣рд┐рддреНрдп
- Lua en.wikipedia.org/wiki/Lua рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
- Brainfuck.wikipedia.org/wiki/Brainfuck рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
- рд░реВрд╕реА рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг www.lua.ru/doc
- рдЕрдВрдЧреНрд░реЗрдЬреА рдкреНрд░рд▓реЗрдЦрди www.lua.org/manual/5.1
- рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд▓реБрдЖ www.lua.org
- рдбрд╛рдЙрдирд▓реЛрдб luabinaries.sourceforge.net/download.html