정적으로 입력 Lua
-
03-07-2019 - |
문제
내가 찾는 Lua 프런트 엔드 컴파일러는 형식 검사 컴파일 시간에만 출력한 표준 Lua5.1 바이트 코드(있는 실행 시간 형식).내가 원하는 것은 상당한 금액의 정적,컴파일시 구문 분석 및 옵션 입력을 검출하는,사소한 오류보다 빨리 실행 시간입니다.그 결과의 바이트 코드는 것이 좋게 재생하는 기존 Lua 바이트 코드를 컴파일된 기준 LoadString().
을 명확--어떤 차이를 만에 발생할 바이트를 컴파일하는 시간입니다.런타임 시에는 바이트 코드는 아이디어가 있지 않는 다른 아무것도/특이한 일을 하는 동안 그것을 컴파일 단계입니다.
내가 무엇을에서 마음의 소리를 많이 좋아 ActionScript;지 않음 ActionScript 컴파일러로 출력하는 Lua 바이트 코드!
누군가는 들을의 이러한 노력?본부에 대한 참조를 사용하여 MetaLua 이렇게 하려 하지만 솔직히 내가 충분히 밝은 머리를 만들의 꼬리는 그들의 문서
해결책
2005 년 여름 또는 그에 따라 믿을 수 없을 정도로 똑똑한 학부생 LUA에 대한 컴파일 타임 유형 추론을 수행하는 문제는 주석에 의해 도움을 줄 수 있습니다. 이 문제는 엄청나게 어려운 것으로 판명되었습니다! (내 학생은 짧은 기술 메모를 썼지 만 실제로는 일반적인 순환을위한 것이 아닙니다.)
내가 당신이 제기 한 문제를 해결하고 싶다면 쌍둥이 제약으로 중요한 정적 유형 확인을 허용합니다 그리고 그것은 표준 바이트 코드 컴파일 된 LUA 코드와 상호 운용하십시오, 나는 할 것이다 처음부터 새로운 언어를 설계하십시오 이 두 가지 제약을 충족시키기 위해. 상당한 양의 작업이지만 유형 시스템을 LUA로 개조하는 것보다 훨씬 쉽습니다.
다른 팁
참조하십시오 이 Metalua 블로그 게시물.
-{ extension "types" }
function sum (x :: list(number)) :: number
local acc :: number = 0
for i=1, #x do acc=acc+x[i] end
return acc
end
이것은 런타임 솔루션처럼 보입니다.
어쨌든, 당신의 질문을 자유롭게 물어보십시오 Metalua 메일 링리스트. LUA 구문을 확장하려면 MetalUA가 가장 먼저 보는 도구입니다.
추신. 제발 lua를 올 캡으로 쓰지 마십시오!
이 질문은 6 살입니다. 그러나 여기에 새로운 대답이 있습니다. http://terralang.org/
C와 마찬가지로 Terra는 수동 메모리 관리가있는 단순하고 정적으로 정적으로 컴파일 된 언어입니다. 그러나 C와 달리 처음부터 LUA와 상호 작용하도록 설계되었습니다. Terra 함수는 Terra 키워드를 사용하여 생성 된 일류 LUA 값입니다. 필요할 때는 JIT가 기계 코드와 컴파일됩니다.
새로운 종이"입력 Lua:선택적인 유형을 시스템에 대한 루아에서"PUC-리오 그냥에 출판 Dyla'14. http://dl.acm.org/citation.cfm?id=2617553
그것은"에 대한 초기의 디자인을 입력 Lua,는 필요에 따라 형식의 확장 Lua 스크립트 언어".그것은 여전히 진행 중이며,형식 시스템은 여전히 비교적 간단하다.어떤 유형을 유추/형식 검사 도구를 제공합니다.
에 관한 metalua 따라 입력하는 시스템,갯벌 잠금:선택 사항 정적 유형을 확인하고추를 위한 루아서입니다. http://lua-users.org/lists/lua-l/2013-02/msg00403.html.
라비도 있습니다https://github.com/dibyendumajumdar/ravi
Ravi 프로그래밍 언어는 제한된 선택적 정적 타이핑 및 LLVM 및 LIBGCCJIT 기반 JIT 컴파일러를 갖춘 LUA 5.3의 파생물입니다.
나는 정말로 Terra에서 프로그래밍을 즐깁니다 (위 참조)