나는 Abdulaziz Ghuloum의 Compilers: Backend to Frontend (and Back to Front Again)을 통해 진행하려고합니다. 전체 과정/세미나에서 기대하는 것과는 축약 된 것처럼 보이므로 직접 작성해야합니다.Ghuloum은 어떤 제도를 사용합니까?
는 예를 들어, 나는 DrScheme의 R5RS 맛에 자신의 테스트 프레임 워크를 사용하는 것을 시도했다, 그러나 매크로 물건을 좋아하지 않는 것 : 나는 그의 소개 종이를 읽은
src/ghuloum/tests/tests-driver.scm:6:4: read: illegal use of open square bracket
을 코스, An Incremental Approach to Compiler Construction, 사용되는 기술의 훌륭한 개요를 제공하고, '여분의 크레딧'을 구현하려는 기능이있는 몇 가지 구성표를 언급하지만 그는 과정에서 사용하는 구성표에 대해서는 언급하지 않습니다.
업데이트
나는 아직도 (아래 엘리에 의해 제안 등의 쁘띠 계획 등의 옵션을 조사) 원래의 질문으로 파고하지만 Gholoum의 작품에 관한 흥미로운 링크를 발견, 그래서 여기를 포함하고 있어요.
[Ikarus Scheme] (http://en.wikipedia.org/wiki/Ikarus_(Scheme_implementation)))은 Ghuloum의 아이디어를 실제로 구현 한 것으로 그의 박사 과정에 참여한 것으로 보이며 R6RS의 첫 번째 구현 중 하나라고 생각합니다. 예
다음 예는 PLT 2.4에서 작동하는 것 같다 지금 Ikarus하지만, configure 스크립트 내 문제가 여전히 해결되지 않은 그래서 내 시스템의가, libgmp.so 의 설치 인식하지 않습니다.
.2 Pretty Big을 사용하여 DrEd에서 실행
01 인해 실패로 가 #lang 방식으로 표시되는 오류 메시지foo.scm:7:3: expand: unbound identifier in module in: emit
에서 결과 지침을 필요로 대체하려고 23,516,는
(require lang/plt-pretty-big)
(load "/Users/donaldwakefield/ghuloum/tests/tests-driver.scm")
(load "/Users/donaldwakefield/ghuloum/tests/tests-1.1-req.scm")
(define (emit-program x)
(unless (integer? x) (error "---"))
(emit " .text")
(emit " .globl scheme_entry")
(emit " .type scheme_entry, @function")
(emit "scheme_entry:")
(emit " movl $~s, %eax" x)
(emit " ret")
)
테스트 - driver.scm을로드합니다. #lang r6rs을 사용하면 REPL을 사용할 수 없으므로 사용하고 싶습니다. 따라서 Pretty Big을 계속 사용하려고합니다.
그의 환자 도움에 대한 Eli Barzilay에게 감사드립니다.
또한 Chez Scheme의 새로운 릴리스로 인해 문제가 발생할 수 있습니다. 따라서 Chez Scheme을 사용하더라도 매크로 및 모듈과 관련된 오래된 사항이 작동하지 않을 수 있습니다. – erjiang