Scheme2Js

소프트웨어 스크린 샷:
Scheme2Js
소프트웨어 정보:
버전: 20101114
업로드 날짜: 11 May 15
개발자: Florian Loitsch
라이센스: 무료
인기: 6

Rating: nan/5 (Total Votes: 0)

Scheme2Js는 자바 스크립트 컴파일러 방식이다. 어떤 노력이 R5rs 최대한 가까이에 소요되는 하였지만, 우리는 주로 효율 농축시켰다.
보통 Scheme2Js는 자바 스크립트 코드를 생성, 즉 비교 코드를 손으로 작성합니다. 이러한 성능을 달성하기 위해, Scheme2Js 완전히 호환 R5rs 아니다. 특히이 연속 요청, 정확한 숫자에 대한 지원이 부족하고 부분적으로 만 꼬리 재귀를 처리합니다.
Scheme2Js 결과를 수정할 수있는 몇 가지 플래그를 제공합니다 :
ย ท --no-JS-도트 표기법 점 표기법 자바 스크립트 필드에 대한 액세스를 허용하지 않습니다. 이 플래그는 중요 document.getElementById처럼 형태 (XY)의 액세스를 사용하지 않도록 설정합니다. 그것은이 JS 필드 함수를 사용 유효한 표현하지만 여전히 액세스 할 수있다.
ย ท --mutable 스트링 : 주문 스트링 작업의 성능을 향상시키고 방식 및 자바 스크립트, 자바 스크립트 스트링 기본 구현지도 반응식 문자열 사이의 인터페이스를 용이하게하도록한다. 계획 문자열과는 달리, 자바 스크립트 문자열은 그러나 불변입니다. 변경할 수있는 제도 문자열을 표현하는 자바 스크립트 클래스,이 플래그지도 문자열. 결과 코드는 약간 느릴 수 있으며 이는 자바 스크립트 코드와 인터페이스하기 더 어렵다.
ย ท --encapsulate-부분은 익명 함수로 프로그램을 캡슐화합니다. 만 글로벌 변수는이 익명 함수의 외부에있는. 한편이 익명 함수에 하나의 함수 호출을 소개합니다. 그러나 다른 한편으로 대부분의 자바 스크립트 구현은 빨리이 최적화를 실행해야합니다 : 일반적으로 해시 테이블은 자바 스크립트로 범위를 나타내는 데 사용된다. 익명 함수에게 프로그램을 사용하여 변수는 (이론적으로) 이러한 변수에 대한 액세스를 가속 자신의 작은 해시 테이블로 구분됩니다. 더 중요한 변수는 자신의 해시 테이블에 저장하지 전역 변수에 의해 액세스 가능한 글로벌 해시 테이블에있다. 간접적 전역 변수의 내용을 변경하기가 매우 용이하다. 인라인 또는 다른 일반적인 최적화는 글로벌 변수에 할 따라서 불가능하다. 익명 함수에서 프로그램의 변수를 저장함으로써 이러한 최적화가 다시 가능하게된다.
ย ท --optimize-VAR-수는 결과 자바 스크립트 코드에 사용 된 변수의 수를 줄일 수 있습니다. 코드는 더 빨리 실행할 수 있지만 변수 이름이 손실되고 동일한 변수가 여러 번 사용할 수 있듯이, 디버그 어렵다있다.
ย ท --optimize-동안이 플래그 Scheme2Js 루프하면서 공통의 최적화와 함께. 최적화되지 않은 루프의 형식은 종종 동안 :
 동안 (TRUE) {
   경우 (테스트)
     resVar의 = 입술;
   다른 {
     modify_loop_variable;
     계속;
   }
   휴식;
 }
 
이 최적화는 이러한 패턴을 찾아 while 루프로 테스트를 이동 :
 반면 (! 시험) {
   modify_loop_variable;
 }
 resVar의 = 입술;
 
이 최적화는 최근에 구현 된 때문에 아직 기본적으로 활성화되지 않습니다.
ย ท --verbose는 몇 가지 정보를 인쇄합니다.
ย ท --no-인라인 모든 기능 인라인 (상수가 여전히 인라인 될 수 있습니다)를 사용하지 않습니다.
ย ท --inline-전역은 Scheme2Js 인라인 전역 함수와 상수를 할 수 있습니다. 이 두 원치 않는 부작용이있을 수 있습니다 : 하나, 전역 변수는 종종 다른 모듈 사이에 데이터를 전송하는 데 사용됩니다. 그들에 대한 참조가 더 이상 존재하지 않는 경우 일부 인라인 기능이 손실됩니다. 전역 함수는 모듈 외부에서 사용하는 경우, 하나는이 플래그를 사용하지 말아야합니다. (이 동작은 Scheme2Js의 향후 버전에서 변경 될 수 있습니다.)
ย ท --unresolved-IS-JS : 변수가 결합되지 않은 경우, 컴파일러는 변수가 다른 모듈에서 온다, 또는 자바 스크립트에서 가정합니다. 제 계획을 참조하십시오 - 자바 스크립트를 자바 스크립트 제도 인터페이스에 대한 자세한 설명은.
ย ท --js-이 계획 기능 내에서이 변수를 제공합니다. 이 방법은 반응식 절차는 자바 스크립트 객체의 메소드로서 사용될 수있다.
ย ท --no-tailrec는 동안 루프 최적화 tailrec을 사용할 수 없습니다. 당신이 꼬리 RECS을 번역하는 컴파일러의 방법에 버그가 의심되는 경우, 당신은이 플래그를 시도 할 수 있습니다.
ย ท --no-최적화-호출은 바이너리 또는 단항 작업의 Scheme2Js 인라인을 사용하지 않습니다. 인스턴스 sci_plus (3, 5) (3 + 5)에 최적화되어 있습니다. 이 최적화는 매우 중요하며,이를 비활성화하는 이유는 일반적으로 없다.
ย ท --no-최적화-consts는 미리 일정한 계산을 비활성화합니다. (이 플래그) 사용하지 않는 한, 화합물 상수는 미리 계산하고 자신의 발생은 상수를 들고 변수에 대한 참조로 대체. 반복하게이 빠르게 이러한 상수에 액세스하지만, 새로운 변수를 소개합니다.
ย ท --no-최적화-boolify는 boolify 최적화를 사용하지 않습니다. 자바 스크립트의 및 제도의 boolify은 동일하지 않습니다 : 자바 스크립트 제도는 #F을 가지고있는 반면, 거짓, 0, 허위하여 null과 undefined를 고려한다. 최적화되지 않은 boolify 따라서 항상 false에 대해 테스트를 추가하는 경우 (테스트 == 거짓!) ... Scheme2Js 볼 수있는 경우 테스트 자체가 부울임을, 그것은 불필요한을 제거 할 수 있습니다 == 거짓 테스트를!. 이 플래그는이 최적화를 사용하지 않습니다.
ย ท --d 무대 무대 무대 후 AST의 점 파일 (참조 그림은 GraphVIZ)를 인쇄합니다. 가능한 단계는 다음과 같습니다 동안, (TT "문"), 노드 elim3, 나무, 기호, 노드 elim1, 꼬리, 인라인, 상수 전파, RM-미사용 바르, 캡처, 노드 elim2를 확장합니다. 보통 사람은하지 않는 디버깅을 위해,이 플래그를 필요로하지 않는다.
ย는 ท --print-LOCS 인쇄 자바 스크립트 파일에 주석으로 원래의 위치를​​. 이러한 위치는 현재 문자 오프셋 파일의 시작 부분에서입니다

이 릴리스의 새로운 기능 : 있습니다.

사소한 변경 및 버그 수정이 Scheme2Js에 홉에서 이식되었다.

버전 20100816의 새로운 기능 :

Scheme2Js '런타임 리더는 이제 키워드를 인식합니다.
몇 가지 오류가 수정되었습니다.

버전 20081219의 새로운 기능 :

컴파일러가 최적화되었습니다.
그것은 훨씬 더 빨리 지금과 적은 메모리를 사용합니다.
많은 버그가 수정되었습니다.
Scheme2Js의 기본 모듈 절은 Bigloo의 하나 지금과 비슷합니다.
이 릴리스는 규정 된 이름을 지원합니다.

유사한 소프트웨어

Box
Box

19 Feb 15

Craft
Craft

20 Feb 15

J
J

20 Feb 15

Gauche
Gauche

14 Apr 15

코멘트 Scheme2Js

댓글을 찾을 수 없습니다
코멘트를 추가
이미지를 켜십시오!