2010-01-29 4 views
7

나는 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에게 감사드립니다.

+0

또한 Chez Scheme의 새로운 릴리스로 인해 문제가 발생할 수 있습니다. 따라서 Chez Scheme을 사용하더라도 매크로 및 모듈과 관련된 오래된 사항이 작동하지 않을 수 있습니다. – erjiang

답변

3

그가 사용하는 언어는 Chez Scheme 일 가능성이 큽니다. 그럼에도 불구하고 PLT의 R5RS 언어는 대괄호와 같은 확장 기능을 사용하여 R5RS의 매우 엄격한 버전입니다. 기본값 #lang scheme을 사용하면 더 많은 마일리지를 적립 할 수 있습니다. Chet의 무료 버전 인 Petit에서 작업 할 수 있는지 확인하십시오.

+0

엄격한 R5RS에서 [] 정말로 불법입니까? 나는 그들이 (와) 똑같이 행동한다고 ​​명시된 것으로 생각했다. (나중에) 그래, 섹션 7.2에서는 [], 그냥()에 대한 언급이 없습니다.그래서 나는 그들이 불법이라고 생각합니다. –

+0

예, 그들은 항상 "미래 확장"을 위해 예약되었으며 R6RS에서 "()"와 동일하게 만들어졌습니다. 어쨌든 몇 가지 구성표가 이러한 확장 기능을 가지고 있지만 PLT R5RS 언어에 대한 일반적인 요청은 매우 엄격하게 작성하는 것이 었습니다. –

+0

엘리, 추천 해 주셔서 감사합니다. 내 리눅스 박스에 라이브러리 문제가 있지만 Petite Scheme을 탐색 중입니다. 어쩌면 나는 집에서 나의 Mac을 더 잘 가질 수있을 것이다. 누구나 Ikarus를 성공적으로 설치 했습니까? 나는 Ghuloum 씨를 기원으로 그것이 []를 용인한다고 생각합니다. –

1

Ubuntu x86에서 here을 실행하기위한 설정 지침을 볼 수 있습니다.

작은 시스템의 설치 다운로드는 here입니다.