(define read-eval-print (sllgen:make-rep-loop "--> "
(lambda (pgm) (eval-program pgm))
(sllgen:make-stream-parser
the-lexical-spec
the-grammar)))
有人熟悉这种类型的错误吗?请帮忙。
您需要使用正确的语言。根据文档,您似乎需要以以下方式启动源文件#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。
然而,真正看起来最有希望的结果是