0
    (define read-eval-print (sllgen:make-rep-loop "--> "
(lambda (pgm) (eval-program pgm))
(sllgen:make-stream-parser
 the-lexical-spec
 the-grammar)))

有人熟悉这种类型的错误吗?请帮忙。

4

1 回答 1

0

您需要使用正确的语言。根据文档,您似乎需要以以下方式启动源文件#lang eopl

#lang eopl

(define read-eval-print
  (sllgen:make-rep-loop
   "--> "
   (lambda (pgm)
     (eval-program pgm))
   (sllgen:make-stream-parser
    the-lexical-spec
    the-grammar)))

一旦你这样做了,当然,你会开始得到一些其他的错误,例如,eval-program没有定义的。如果您定义一个虚拟的,例如,

(define (eval-program pgm)
  (values))

然后你会得到一个错误

sllgen:make-stream-parser: 错误的扫描仪规格在:the-lexical-spec

你需要用一个实际的规范替换那个词法规范,类似地(我希望,虽然我没有探索到这一步)用the-grammar. 上面链接的文档可能(或可能不会)帮助您解决这些问题。看起来您可以从本书的网站上获得本书所基于的代码Essentials of Programming Languages

然而,真正看起来最有希望的结果是

于 2013-10-23T23:07:53.200 回答