gpt4 book ai didi

scheme - Ghuloum使用什么方案?

转载 作者:行者123 更新时间:2023-12-04 08:30:29 28 4
gpt4 key购买 nike

我正在尝试通过 Abdulaziz Ghuloum 的 Compilers: Backend to Frontend (and Back to Front Again) 工作。它似乎简化了人们在完整类(class)/研讨会中所期望的内容,所以我试图自己填写这些部分。

例如,我尝试在 DrScheme 的 R5RS 风格中使用他的测试框架,但它似乎不喜欢宏的东西:

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

我已经阅读了他关于类(class)的介绍性论文 An Incremental Approach to Compiler Construction ,它对所使用的技术进行了很好的概述,并提到了一些可能希望实现“额外学分”功能的方案,但他没有提到方案他在类(class)中使用。

更新

我仍在深入研究最初的问题(调查选项,例如下面 Eli 建议的 Petit Scheme),但发现了一个与 Gholoum 的工作相关的有趣链接,因此我将其包括在此处。

[Ikarus Scheme]( 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 的免费版本。)

关于scheme - Ghuloum使用什么方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2165184/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com