Sont récents, Lua pour JavaScript, des convertisseurs ou des interprètes quelque part?
J'ai besoin de trouver un bon Lua pour JavaScript convertisseur; lua2js sur luaforge.org est de date (3 ans et il semblerait qu'il ne fonctionne pas sur Lua 5.1) et je n'ai encore rien trouvé sur Google.
Quelqu'un a une expérience avec tous les autres convertisseurs de là? Il devrait fonctionner sur Lua 5.1 et, de préférence, être .NET, mais .NET n'est pas une exigence. Un javascript interpréteur lua marcherait aussi bien.
Vous devez vous connecter pour publier un commentaire.
Un nouveau challenger s'affiche: Lua.js
https://github.com/mherkender/lua.js
Pour certains génial démos de prouver sa maturité, voir https://github.com/ghoulsblade/love-webplayer
Lua.js fonctionne par conversion de code Lua directement à ECMAscript (JavaScript, ActionScript), ce qui lui confère un important avantage de vitesse sur des solutions qui tentent de mettre en œuvre la VM Lua en JavaScript.
C'est une question récurrente sur le Lua liste, je suppose à cause de la partie superficielle de la similitude des deux langues.
Malheureusement, il y a de nombreuses différences importantes qui ne sont pas si évidentes. Faire fonctionner ont besoin d'un véritable compilateur ciblage JS au lieu de Lua du bytecode, ou la réécriture de la VM Lua en JavaScript.
Je ne connais pas les objectifs initiaux de Lua2js; mais si c'était simplement une limited "traducteur", alors l'écriture de code Lua destiné à être traduit aurait pour effet de nier la plupart (tous?) de belles choses sur le Lua. Par exemple, je ne pense pas que vous pourriez utiliser une fonction comme une clé de la table, car en JavaScript les touches ne sont que des chaînes de caractères (et des chiffres? je ne suis pas sûr).
L' .NET choix est plus raisonnable, il pourrait être fait modifier le compilateur pour émettre de la CLR bytecode au lieu de la norme Lua bytecode. Même si CLR est conçu et optimisé pour d'autres types de langues, il est certainement assez générique pour fonctionner très bien. Le principal obstacle serait la disponibilité de bibliothèques.
Une autre option que je viens de trouver est ce document par Roberto Ierusalmschy et Fabio Mascarenhas, où ils explorent la traduction de LuaVM bytecode dans CLR bytecode.
Comme d'habitude sur les documents universitaires, il n'y a pas d'indication sur la date à laquelle il a été écrit, donc je n'ai aucune idée si elle est nouvelle et révolutionnaire ou anciennes et oubliées.
for (k in t) {console.log(k,typeof(k));}
c'est toutes les chaînes. Pour la plupart des cas, il n'a pas d'importance, tant que c'est cohérent; mais en Lua, c'est différent (n'importe quelle valeur saufnil
est acceptable, à la clé), et beaucoup de code ne dépendent que. si vous voulez un Lua->JS "traducteur", vous devez tenir compte de ces choses, ou ce sera juste JS avec Lua syntaxe.Emscripten contient l'interpréteur Lua converti à JavaScript. Vous pouvez essayez-la dans votre navigateur. Toutefois, la taille est de 1,5 MO.
ljs a une démo d'un vm lua en javascript. Le code Source peut même être compilé dans le navigateur à l'aide d'un interpréteur lua écrit en lua.
https://github.com/humbletim/ljs
J'ai été en utilisant cette mise en œuvre https://github.com/mherkender/lua.js qui a été mentionné dans une réponse précédente. Il le fait soit en mode hors connexion et de charge-temps de l'analyse et je l'ai trouvé très facile à utiliser.
Mes scripts Lua étaient appel par C-fonctions, et de conversion que C du code pour le Javascript et accroché avec lua.js a été assez simple.
visite http://luajs.org pour voir mon travail.
Il y a des démos et des repères sur le menu du site.
C'est seulement à 35,5 K avant de le compresser et 12.2 K après la compression. Il peut accéder à des objets Javascript/tableaux directement. Il est mis à jour presque tous les jours.
Il est plus rapide que lua.vm.js. (Pas très rapide en raison de la métatable mise en œuvre), et je garde l'optimisation de ce dernier.
Traduction de javascript est intéressant de permettre un javascript de remplacement sur le côté navigateur. Nous avons pu prendre un peu de type de sécurité sur le navigateur aussi. Le ciblage javascript en tant que plate-forme de ciblage est l'un des plus répandus de la plateforme, les navigateurs de la planète. GWT ne java2js mais je ne suis pas sûr si je veux introduire GWT pour seulement quelques pages d'une application. Je dois penser à elle. Pour votre fonction comme une clé dans une table, il doit y avoir un peu de magie à faire. Peut-être juste d'attribuer un nom unique à chaque fonction lors de la compilation et de l'utiliser à votre clé. Vous pouvez également ajouter un préfixe à tous vos clés pour la vérification du type et c'est un bon début.
Une façon de le faire pourrait être à l'aide de LuaSub et génération de JavaScript au lieu de Lua de sortie. Cela peut être fait, avec un effort raisonnable (actuellement LuaSub ne pas le faire).
Endroits où JS ne peut pas être tordu pour Lua peut être découvert au moment de la compilation, et de provoquer une erreur.
Je vais faire beaucoup de JS+de SVG dans l'avenir et si le JS côté s'avère un casse-tête, cela peut être une chose à essayer. Si quelqu'un d'autre veut le faire, faites le. Le LuaSub source est là pour vous.
À l'origine, LuaSub a été conçu comme une syntaxe extender pour Lua 5.1, pour introduire la facilité d'utilisation des concepts (s).un. d'échelon de vérification de type) sans freinage compatibilité avec les standards de Lua ou qui ont besoin de le patcher. Il est semblable à MetaLua dans ce (qui est devenue plus courante, paraît-il).
J'ai écrit une partie de Lua complet à ECMAscript statique compilateur.
https://github.com/mherkender/lua2js-experiment
Il pourrait ne pas répondre à vos besoins, à mesure que le projet manque de nombreuses fonctionnalités clés et je ne suis pas se précipiter pour terminer, parce que c'est une impasse. Lire la suite dans le fichier README pour plus de détails.
En dépit de certaines des préoccupations que j'ai vu autour de l'Internet, il n'y a qu'un peu de Lua-caractéristiques spécifiques (comme l' *fenv fonctions, ou plus de débogage de la bibliothèque) que Javascript ne pouvez pas vraiment de soutien. D'autres, comme le fichier de la bibliothèque, sont limitées par les caractéristiques que la VM a accès.
Outre, j'ai personnellement essayé le Lua + Emscripten option, et tandis qu'il est impressionnant, il est aussi très lent.