2008-10-06 3 views
30

좋은 루아 - 자바 스크립트 변환기를 찾아야합니다. luaforge.org의 lua2js는 구식입니다 (3 세 이상이며 Lua 5.1에서는 작동하지 않는 것 같습니다). Google에서 아직 아무것도 찾지 못했습니다.Lua를 자바 스크립트로 변환하는 변환기 나 통역사가 있습니까?

누구든지 다른 변환기에 대한 경험이 있습니까? 그것은 루아 5.1에서 작동해야하며 선호하는 .NET 기반이지만 .NET은 요구 사항이 아닙니다. 자바 스크립트 루아 통역사도 잘 작동합니다.

답변

8

이것은 루아리스트에서 반복되는 질문입니다. 아마도 두 언어의 표면적 유사성 때문일 것입니다.

불행히도, 너무 분명하지 않은 많은 중요한 차이점이 있습니다. 작동 시키려면 Lua의 바이트 코드 대신 JS를 목표로하는 컴파일러가 필요합니다. 또는 JavaScript로 Lua VM을 다시 작성해야합니다.

나는 Lua2js의 원래 목표를 모른다. 그러나 단순히 제한된 '번역자'라면 번역 할 의도로 루아 코드를 작성하는 것이 루아에 관한 멋진 것들을 대부분 거부 할 것입니다. 예를 들어, 나는 JavaScript에서 키가 문자열 (그리고 숫자 일까?)을 알 수 없기 때문에 함수를 테이블 키로 사용할 수 있다고 생각하지 않는다.

.NET을 선택하는 것이 더 합리적입니다. 기존 컴파일러를 변경하여 표준 Lua 바이트 코드 대신 CLR 바이트 코드를 방출 할 수 있습니다. CLR이 다른 종류의 언어 용으로 설계되고 최적화 된 경우에도 CLR은 확실히 잘 실행될만큼 일반적입니다. 주요 장애물은 도서관의 가용성입니다.

방금 ​​찾은 또 다른 옵션은 Roberto Ierusalmschy와 Fabio Mascarenhas가 작성한 this paper입니다. 여기서 LuaVM 바이트 코드를 CLR 바이트 코드로 변환하는 방법을 살펴 봅니다.

학술 논문에는 일반적으로 쓰여진 날짜가 없으므로 새롭고 혁신적이며 오래되고 잊혀진 것인지 잘 모르겠습니다.

+0

사람들의 진정한 목표는 무엇일까요? 그들은 루아를 알고 있으며 자바 스크립트를 배우지 않고도 자바 스크립트를 작성하고 싶습니까? 그들은 루아로 작성된 큰 응용 프로그램을 가지고 있으며 최소한의 작업으로 웹 응용 프로그램으로 포팅하고 싶습니까? 이 중 아무 것도 나에게 매우 보인다. – davr

+0

http://www.computerworld.com.au/index.php/id;1028768484의 인터뷰는 Lua.NET이 최근 진행중인 프로젝트라고 생각합니다. –

+0

인사말, 하나는 자바 스크립트에서 테이블 키로 함수를 사용할 수 있습니다. 귀하의 견해에 대한 정보는 제공되지 않습니다. – tomdemuyt

0

자바 스크립트로 번역하면 브라우저 측에서 자바 스크립트를 대체 할 수 있습니다. 우리는 브라우저에서도 약간의 타입 안전성을 취할 수 있습니다. 자바 스크립트를 플랫폼으로 타겟팅하는 것은 지구상의 브라우저 중 가장 보편적 인 플랫폼 중 하나를 목표로합니다. GWT는 java2js를 사용하지만 애플리케이션의 몇 페이지 만 GWT를 소개하고 싶은지 확실하지 않습니다. 나는 그것에 대해 생각해야한다. 당신의 기능을 테이블의 열쇠처럼, 마술을해야합니다. 어쩌면 컴파일시 각 함수에 고유 한 이름을 할당하고 키에 사용합니다. 형식 검사를 위해 모든 키에 접두어를 추가 할 수도 있습니다.

0

이 작업을 수행하는 한 가지 방법은 LuaSub을 사용하고 Lua 출력 대신 JavaScript를 생성하는 것입니다. 이것은 합리적인 노력으로 할 수 있습니다 (현재 LuaSub은 그것을하지 않습니다).

JS가 루아의 요구 사항에 맞게 구부리지 못하는 곳은 컴파일 타임에 발견 될 수 있으며 오류가 발생할 수 있습니다.

앞으로 JS + SVG를 많이 할 예정이며, JS 측에서 두통이 나왔다면 시도해 볼 수 있습니다. 다른 사람이 가고 싶다면 그렇게하십시오. LuaSub 소스가 있습니다.

원래 루아 5.1은 루아 5.1의 문법 확장자로서, 표준 루아와의 호환성을 제동하지 않거나 패치 할 필요없이 사용하기 쉬운 개념 (s.a. increment, type check)을 도입하기 위해 만들어졌습니다. 이것에있어서 MetaLua과 비슷합니다 (더 평범한 것으로 보입니다).

0

부분적으로 완전한 Lua를 ECMAscript 정적 컴파일러에 작성했습니다. 프로젝트가 많은 주요 기능을 누락하고 막 다른이기 때문에 그것을 완료하기 위해 돌진하고 있지 않다으로

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

그것은 당신의 필요를 충족하지 않을 수 있습니다. 자세한 내용은 README에서 자세히 읽으십시오.

인터넷에서 보았던 몇 가지 우려 사항에도 불구하고 Javascript가 실제로 지원할 수없는 루아 전용 기능 (예 : * fenv 기능 또는 대부분의 디버그 라이브러리)이 있습니다. 파일 라이브러리와 같은 기타 기능은 VM이 액세스 할 수있는 기능에 의해 제한됩니다.

개인적으로 Lua + Emscripten 옵션을 직접 사용해 보았습니다. 인상적이지만 매우 느립니다.

4

ljs는 자바 스크립트에서 루마 VM의 실무 데모를 가지고 있습니다. lua로 작성된 루아 인터프리터를 사용하여 소스 코드를 브라우저에서 컴파일 할 수도 있습니다.

https://github.com/humbletim/ljs

9

새로운 도전자가 나타납니다 Lua.js https://github.com/mherkender/lua.js

을 성숙을 증명 굉장한 데모를 들어, https://github.com/ghoulsblade/love-webplayer

Lua.js (포함 ECMA 스크립트에 직접 루아 코드를 변환하여 작동 참조 JavaScript, ActionScript)를 제공합니다.이 기능은 JavaScript로 Lua VM을 구현하려고 시도하는 솔루션보다 속도면에서 중요한 이점을 제공합니다.

+0

@Akavel은이 정보를 편집하여 정보를 추가하려고 시도했습니다. 편집 프로세스가 승인 프로세스에 실패했으나 그럼에도 불구하고 유용하다고 생각합니다. 내가 인용 : \t는 "성숙을 증명 굉장한 데모 내용은 다음을 참조하십시오 https://github.com/ghoulsblade/love-webplayer Lua.js은 (ECMA 스크립트에 직접 루아 코드를 변환하여 작동 JavaScript를 포함한 Lua VM을 구현하려는 솔루션보다 중요한 속도 이점을 제공합니다. " – Breton

+0

나는 이것에 대해 아마 잊어 버린 것으로 생각했기 때문에 돌아와서 이것을 업데이트 해 주길 바란다. – SheetJS

2

이전 응답에서 언급 한 구현 https://github.com/mherkender/lua.js을 사용해 왔습니다. 그것은 오프라인과로드 타임 구문 분석을 수행하며 사용하기가 매우 쉽습니다.

내 루아 스크립트는 C- 함수를 통해 호출했고,이 C 코드를 Javascript로 변환하고 lua.js로 연결하는 것은 매우 간단합니다.

2

내 작품을 보려면 http://luajs.org을 방문하십시오.

사이트 메뉴에는 데모 및 벤치 마크가 있습니다.

압축 전과 압축 후 단지 12.5K입니다. Javascript 객체/배열을 직접 액세스 할 수 있습니다. 거의 매일 업데이트됩니다.

lua.vm.js보다 빠릅니다. (metatable 구현 때문에 그렇게 빠르지는 않습니다.) 계속 최적화하고 있습니다.

+0

luajs.org에 대한 링크가 더 이상 작동하지 않는다. –

관련 문제