8

Abdulaziz Ghuloum による Compilers: Backend to Frontend (および Back to Front Again) を試していますフルコース/セミナーで期待されるものから省略されているように見えるので、私は自分で部分を埋めようとしています.

たとえば、DrScheme の R5RS フレーバーで彼のテスト フレームワークを使用しようとしましたが、マクロが気に入らないようです。

src/ghuloum/tests/tests-driver.scm:6:4: read: illegal use of open square bracket

私はコースに関する彼の紹介論文An Incremental Approach to Compiler Constructionを読みました。これは、使用されている手法の概要を示しており、「追加の功績」のために実装したい機能を備えたいくつかのスキームについて言及していますが、彼はそうではありません。彼がコースで使用するスキームについては言及しないでください。

アップデート

私はまだ元の質問を掘り下げています(以下のEliによって提案されたPetit Schemeなどのオプションを調査しています)が、Gholoumの仕事に関連する興味深いリンクを見つけたので、ここに含めます.

[Ikarus スキーム]( http://en.wikipedia.org/wiki/Ikarus_(Scheme_implementation))は Ghuloum のアイデアの実際の実装であり、彼の博士号の一部であったようです。仕事。これは、R6RS の最初の実装の 1 つになるはずです。今Ikarusをインストールしようとしていますが、configure スクリプトは私のシステムのlibgmp.soのインストールを認識したくないので、私の問題はまだ解決されていません。

次の例は、Pretty Big を使用して DrEd で実行されている PLT 2.4.2 で動作するようです。

(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")
  )

requireディレクティブを#lang スキームに置き換えようとすると、エラー メッセージが表示される

foo.scm:7:3: expand: unbound identifier in module in: emit

これは、 tests-driver.scm のロードに失敗したことが原因のようです。#lang r6rsを使おうとするとREPL が無効になるので、これは本当に使いたいので、Pretty Big を続けようと思います。

Eli Barzilay の患者の助けに感謝します。

4

2 に答える 2

3

彼が使用する言語は、おそらく Chez Scheme です。それにもかかわらず、PLT の R5RS 言語は R5RS のかなり厳密なバージョンであり、角括弧のような拡張機能はエラーをスローします。デフォルトの#lang scheme言語を使用すると、より多くのマイレージが得られる可能性があります。(または、それが失敗した場合は、無料版の Chez である Petit で作業できるかどうか試してみてください。)

于 2010-01-29T21:42:23.103 に答える
2

Ubuntu x86で実行するためのセットアップ手順については、こちらを参照してください。

Petite Scheme のインストール ダウンロードはこちらから

于 2014-08-02T13:52:48.097 に答える