Ghuloum使用什么方案?
我试图通过编译器:通过Abdulaziz Ghuloum后端到前端(并再次回到正面)。 它看起来可以从一个完整的课程/研讨会期望中缩写出来,所以我试图自己填写这些部分。
例如,我试图在DrScheme的R5RS风格中使用他的测试框架,但它似乎不喜欢宏观的东西:
src/ghuloum/tests/tests-driver.scm:6:4: read: illegal use of open square bracket
我已经阅读了关于该课程的一篇介绍性文章,“编译器构建的增量式方法”,它对所使用的技术进行了很好的概述,并提到了一些可能想要实现“额外功劳”的功能的方案,但他并没有不提他在课程中使用的计划。
更新
我仍在深入探究原始问题(调查诸如下文Eli提出的Petit Scheme等选项),但发现了一个与Gholoum的工作有关的有趣链接,所以我将它包括在这里。
[Ikarus计划](http://en.wikipedia.org/wiki/Ikarus_(Scheme_implementation))是Ghuloum思想的实际实施,似乎是他的博士学位的一部分。 工作。 它应该是R6RS的第一个实现之一。 我正在尝试安装Ikarus,但配置脚本不想识别我的系统安装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")
)
尝试用#lang方案替换require指令会导致错误消息
foo.scm:7:3: expand: unbound identifier in module in: emit
这似乎是由于未能加载tests-driver.scm而导致的。 尝试使用#lang r6rs会禁用我真正喜欢使用的REPL,因此我将尝试继续使用Pretty Big。
感谢Eli Barzilay的耐心帮助。
他使用的语言很可能是Chez Scheme。 无论如何,PLT中的R5RS语言是R5RS的一个非常严格的版本,像方括号这样的扩展会引发错误 - 并且您可能会使用默认的#lang scheme
语言获得更多里程。 (或者,如果失败了,试试看看你是否可以与Petit合作 - Chez的免费版本。)
你可以看到在Ubuntu x86上运行它的设置说明。
娇小计划的安装下载在这里。
链接地址: http://www.djcxy.com/p/44351.html上一篇: What Scheme Does Ghuloum Use?
下一篇: Best way to send an email upon creation of a new model instance in Rails?