una type tablas tabla script llamar insertar externo dinamicas desde datos con codigo archivo agregar javascript lua interpreter converter

type - ¿Hay algún convertidor o intérprete de Lua a JavaScript reciente en alguna parte?



script type= text/javascript src= (9)

Necesito encontrar un buen conversor de Lua a JavaScript; lua2js en luaforge.org está desactualizado (tengo 3 años o más y parece que no funciona en Lua 5.1) y aún no he encontrado nada en Google.

¿Alguien tiene alguna experiencia con otros convertidores? Debería funcionar en Lua 5.1 y preferiblemente estar basado en .NET, pero .NET no es un requisito. Un intérprete de JavaScript lua también funcionaría.


Esta es una pregunta recurrente en la lista de Lua, supongo que debido a la similitud superficial de los dos idiomas.

Desafortunadamente, hay muchas diferencias importantes que no son tan obvias. Para que funcione, es necesario un compilador en toda regla dirigido a JS en lugar del bytecode de Lua, o reescribir la VM de Lua en JavaScript.

No conozco los objetivos originales de Lua2js; pero si era simplemente un "traductor" limitado, entonces escribir el código Lua destinado a ser traducido sería negar la mayoría (¿todo?) de las cosas agradables sobre Lua. Por ejemplo, no creo que pueda usar una función como una clave de tabla, ya que en JavaScript las claves son solo cadenas (¿y números? No estoy seguro).

La elección de .NET es más razonable, se podría hacer cambiando el compilador existente para que emita código de byte CLR en lugar del bytecode estándar de Lua. Incluso si CLR está diseñado y optimizado para otro tipo de idiomas, es definitivamente lo suficientemente genérico como para funcionar muy bien. El obstáculo principal sería la disponibilidad de bibliotecas.

Otra opción que acabo de encontrar es este artículo de Roberto Ierusalmschy y Fabio Mascarenhas, donde exploran la traducción del bytecode LuaVM en bytecode CLR.

Como es habitual en los documentos académicos, no hay ninguna indicación acerca de la fecha en que fue escrito, así que no tengo idea de si es nuevo y revolucionario o viejo y olvidado.


La traducción a JavaScript es interesante para permitir un reemplazo de JavaScript en el lado del navegador. También podríamos tomar un pequeño tipo de seguridad en el navegador. La orientación de JavaScript como plataforma apunta a una de las plataformas más extendidas, los navegadores del planeta. GWT hace java2js, pero no estoy seguro si quiero presentar GWT solo unas pocas páginas en una aplicación. Tengo que pensarlo. Para su función como clave en una tabla, debe haber algo de magia por hacer. Tal vez simplemente asigne un nombre único a cada función en la compilación y úsela para su clave. También puede agregar un prefijo a todas sus claves para verificar el tipo y es un buen comienzo.


Una forma de hacerlo podría ser usar LuaSub y generar JavaScript en lugar de la salida de Lua. Esto se puede hacer con un esfuerzo razonable (actualmente LuaSub no lo hace).

Los lugares donde JS no se puede doblar según los requisitos de Lua podrían descubrirse en tiempo de compilación y provocar un error.

Voy a estar haciendo un montón de JS + SVG en el futuro y si el lado JS resulta ser un dolor de cabeza, esto puede ser algo que se debe intentar. Si alguien más quiere ir, hágalo. La fuente de LuaSub está ahí para ti.

Originalmente, LuaSub fue diseñado como un extensor de sintaxis para Lua 5.1, para introducir conceptos de facilidad de uso (un incremento, verificación de tipo) sin la compatibilidad de frenado con Lua estándar o la necesidad de parchearlo. Es similar a MetaLua en esto (que se ha vuelto más común, al parecer).



He escrito un compilador estático parcialmente completo de Lua para ECMAscript.

https://github.com/mherkender/lua2js-experiment

Puede que no satisfaga tus necesidades, ya que al proyecto le faltan muchas características clave y no me apresuro a completarlo porque es un callejón sin salida. Lea más en el archivo README para más detalles.

A pesar de algunas de las preocupaciones que he visto en Internet, hay solo algunas características específicas de Lua (como las funciones * fenv, o la mayor parte de la biblioteca de depuración) que Javascript realmente no puede admitir. Otros, como la biblioteca de archivos, están limitados por las funciones a las que tiene acceso la máquina virtual.

También probé personalmente la opción Lua + Emscripten, y si bien es impresionante, también es muy lenta.


ljs tiene una demostración funcional de lua vm en javascript. El código fuente puede incluso compilarse en el navegador utilizando un intérprete lua escrito en lua.

https://github.com/humbletim/ljs


He estado usando esta implementación https://github.com/mherkender/lua.js que se mencionó en una respuesta anterior. Hace el análisis fuera de línea y en tiempo de carga y me parece muy fácil de usar.

Mis scripts Lua llamaban a través de C-funciones, y convertir ese código C a Javascript y conectarlo con lua.js ha sido bastante sencillo.


Aparece un nuevo desafío: Lua.js https://github.com/mherkender/lua.js

Para ver algunos demos increíbles que demuestran su madurez, consulte https://github.com/ghoulsblade/love-webplayer

Lua.js funciona convirtiendo el código Lua directamente en ECMAscript (incluidos JavaScript, ActionScript), lo que le da una importante ventaja de velocidad sobre las soluciones que intentan implementar la máquina virtual Lua en JavaScript.


visita http://luajs.org para ver mi trabajo.

Hay demostraciones y puntos de referencia en el menú del sitio.

Son solo 35.5K antes de la compresión y 12.2K después de la compresión. Puede acceder a objetos / matrices de Javascript directamente. Se actualiza casi todos los días.

Es más rápido que lua.vm.js. (No tan rápido debido a la implementación metatable), y sigo optimizándolo.