Ero sivun ”Lua” versioiden välillä
p (fix) |
p (oli jo) |
||
Rivi 3: | Rivi 3: | ||
'''Lua''' on proseduaalinen ja olio-pohjainen scriptikieli, joka on suunniteltu ohjelmien toiminnallisuuden laajentamiseen. Kielellä voi muös tehdä omia itsenäisiä ohjelmia. Lua on totetutettu pienenä C-functiokirjastona. Tämän ansiosta se toimii useilla käyttöjärjestelmillä. Automaatisen muistinhallinnan ja pienten muistivaatimuksiensa ansiosta sitä voi myös käyttää sulautetuissa järjestelmissä. Aivan kuten [[Python]] Lua-kieli on tulkattava ja se tarvitsee tulkin eli virtuaalikoneen. Lua on suunniteltu yhdistettäväksi muihin ohjelmointikieliin. Luodut ohjelmat voi kääntää virtuaalikoneen binääreiksi, mutta yleisin käyttötapa on kääntää ohjelma Lua:n muistiin ja suorittaa se suoraan virtuaalikoneessa. Lua-kieltä on käytetty monissa ohjelmissa kuten [[VLC]]:ssä, Lightroomissa ja peleissä mm. World of Warcraftissa. | '''Lua''' on proseduaalinen ja olio-pohjainen scriptikieli, joka on suunniteltu ohjelmien toiminnallisuuden laajentamiseen. Kielellä voi muös tehdä omia itsenäisiä ohjelmia. Lua on totetutettu pienenä C-functiokirjastona. Tämän ansiosta se toimii useilla käyttöjärjestelmillä. Automaatisen muistinhallinnan ja pienten muistivaatimuksiensa ansiosta sitä voi myös käyttää sulautetuissa järjestelmissä. Aivan kuten [[Python]] Lua-kieli on tulkattava ja se tarvitsee tulkin eli virtuaalikoneen. Lua on suunniteltu yhdistettäväksi muihin ohjelmointikieliin. Luodut ohjelmat voi kääntää virtuaalikoneen binääreiksi, mutta yleisin käyttötapa on kääntää ohjelma Lua:n muistiin ja suorittaa se suoraan virtuaalikoneessa. Lua-kieltä on käytetty monissa ohjelmissa kuten [[VLC]]:ssä, Lightroomissa ja peleissä mm. World of Warcraftissa. | ||
Esimerkki Linuxille sovitetusta Lua-virtuaalikoneesta C++-kielellä toteutettuna. Luodaan seuraavanlainen | Esimerkki Linuxille sovitetusta Lua-virtuaalikoneesta C++-kielellä toteutettuna. Luodaan seuraavanlainen ohjelma. | ||
<source lang="cpp"> | <source lang="cpp"> | ||
extern "C" | extern "C" |
Versio 28. tammikuuta 2016 kello 21.46
Lua on proseduaalinen ja olio-pohjainen scriptikieli, joka on suunniteltu ohjelmien toiminnallisuuden laajentamiseen. Kielellä voi muös tehdä omia itsenäisiä ohjelmia. Lua on totetutettu pienenä C-functiokirjastona. Tämän ansiosta se toimii useilla käyttöjärjestelmillä. Automaatisen muistinhallinnan ja pienten muistivaatimuksiensa ansiosta sitä voi myös käyttää sulautetuissa järjestelmissä. Aivan kuten Python Lua-kieli on tulkattava ja se tarvitsee tulkin eli virtuaalikoneen. Lua on suunniteltu yhdistettäväksi muihin ohjelmointikieliin. Luodut ohjelmat voi kääntää virtuaalikoneen binääreiksi, mutta yleisin käyttötapa on kääntää ohjelma Lua:n muistiin ja suorittaa se suoraan virtuaalikoneessa. Lua-kieltä on käytetty monissa ohjelmissa kuten VLC:ssä, Lightroomissa ja peleissä mm. World of Warcraftissa.
Esimerkki Linuxille sovitetusta Lua-virtuaalikoneesta C++-kielellä toteutettuna. Luodaan seuraavanlainen ohjelma.
extern "C"
{
#include <lua5.2/lua.h>
#include <lua5.2/lauxlib.h>
#include <lua5.2/lualib.h>
#include <stdlib.h> /* For function exit() */
#include <stdio.h> /* For input/output */
#include <string.h>
}
// Aliohjelma virhetilanteen tulostamista varten
void bail(lua_State *L, const char *msg){
fprintf(stderr, "\nFATAL ERROR:\n %s: %s\n\n",
msg, lua_tostring(L, -1));
exit(1);
}
int main(void)
{
// Luodaan LUA-virtuaalikone.
lua_State *L;
L = luaL_newstate();
// Otetaan LUA:n kirjastot käyttöön.
luaL_openlibs(L);
// Ladataan skipti1.lua käyttöön, mutta ei suoriteta sitä
if (luaL_loadfile(L, "scripti1.lua"))
// Virhe jos tiedostoa ei voi lukea
bail(L, "luaL_loadfile() failed");
// Suorita skipti1.lua
if (lua_pcall(L, 0, 0, 0))
// Virhe jos tiedoston sisällössä on virhe
bail(L, "lua_pcall() failed");
lua_getglobal(L, "tellme"); /* Mikä funktio suoritetaan */
if (lua_pcall(L, 0, 0, 0)) /* Suoritetaan funktio */
bail(L, "lua_pcall() failed"); /* Virhe jos lua tiedostossa on virhe. */
lua_close(L);
return 0;
}
Skripti1.lua sisältö voisi olla esimerkiksi tällainen.
function tellme()
io.write("Tämä tuloste luetaan Lua tellme-funktion kautta.\n")
end
Tiedosto ohjelma.cpp voidaan kääntää Linuxilla seuraavasti:
g++ ohjelma.cpp -o ohjelma
Katso myös
- Löve on Lua-scriptikieltä käyttävä pelimoottori.