代码之家  ›  专栏  ›  技术社区  ›  Don Wakefield

Ghuloum使用什么方案?

  •  7
  • Don Wakefield  · 技术社区  · 14 年前

    我正在努力工作 Compilers: Backend to Frontend (and Back to Front Again) 作者:Abdulaziz Ghulum。它似乎是从一个完整的课程/研讨会的预期中缩写而来,所以我正试着自己来填写这些部分。

    例如,我曾尝试在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方案等选项),但发现了一个与Gholoum的工作相关的有趣链接,因此我将其包含在这里。

    [伊卡洛斯计划]( http://en.wikipedia.org/wiki/Ikarus_(Scheme_implementation)) 是古鲁姆思想的实际实现,似乎是他的博士工作的一部分。它应该是R6R的第一个实现之一,我正在尝试安装 Ikarus 现在,但是配置脚本不想识别系统安装的 因此,LBGMP. 所以我的问题还没有解决。

    例子

    下面的示例似乎适用于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")
      )
    

    正在尝试替换 要求 指令与 γ郎方案 导致错误消息

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

    似乎是由于加载失败 测试驱动程序.scm . 正在尝试使用 朗朗R6RS 禁用repl,这是我真正想使用的,所以我将尝试继续使用相当大的。

    我感谢埃利·巴兹利对病人的帮助。

    2 回复  |  直到 10 年前
        1
  •  3
  •   Eli Barzilay    14 年前

    他使用的语言很有可能是切斯计划。不管怎样,plt中的r5rs语言是一个相当严格的r5rs版本,它的扩展名像方括号一样会抛出错误——使用默认值,您可能会获得更多的里程数。 #lang scheme 语言。(或者,如果失败了,试试看你是否可以和Petit——Chez的免费版本合作。)

        2
  •  1
  •   hawkeye    10 年前

    您可以看到运行它的安装说明。 here 在Ubuntu x86上。

    Petite方案的安装下载是 here .