Es wird ja nicht direkt LUA (oder Skript Code allgemein) ausgeführt, sondern der Skriptcode steuert lediglich den Interpreter, welcher beschränkte Möglichkeiten hat.
Stell dir dazu einfach mal ganz einfach vor, dass du ein Programm schreibst, welches verschiedene Arten von Sachen machen kann, wie z.B Text ausgeben, ein Objekt nach Links/Rechts schieben.
Jetzt assoziierst du diese Möglichkeiten mit gewissen Tokens. Ganz einfach sind das z.B lediglich Nummern, wofür 1 für Text ausgeben, 2 für Links und 3 für Rechts steht.
Jetzt kannst du in deinem Textfile das Verhalten des Programmes steuern, ohne es kompilieren zu müssen. Der Interpreter liest dann nämlich einfach die Zahlen ein und schaut, was er als nächstes tun soll.
Einfacher Sachen lassen sich so bereits recht gut steuern. Wenn du jetzt aber ein wenig mehr Logik haben möchtest und nicht nur die stupide (Assembler-mässige) Abarbeitung von Befehlen, dann wird das ganze ein wenig komplexer, aber prinzipiell ist es das gleiche.