문제

내가 찾는 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가 기계 코드와 컴파일됩니다.

그와 같은 일은 없다. 이 작업을 수행하기 위해 Metalua를 연장하는 것이 가능할 수도 있지만 아무도 그렇게하지 않았으며, Afaik, 그렇게 할 계획은 없습니다. LUA는 역동적 인 언어가되어야합니다. 정적으로 입력 한 언어를 원한다면 하나를 사용하십시오.

당신이 본질적으로 찾고있는 것은 Java 또는 C#과 같은 것입니다. 이 경우 프로젝트를 사용할 수 있습니다. lua.net 기존 LUA 코드를 C#과 통합합니다. 도 있습니다 칼루아 자바를 위해.

새로운 종이"입력 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에서 프로그래밍을 즐깁니다 (위 참조)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top