繁体   English   中英

另一个计划初学者的问题

[英]another scheme beginner question

我正在遵循“编程语言:应用程序和解释”

http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/2007-04-26/plai-2007-04-26.pdf (第21页)

现在,我正在研究第21页,以及所有测试用例。 我只能通过第一个,而所有具有“ with”的测试用例都将失败。我意识到我的解析器没有应付“ with”的语句。

此刻是我的解析器:

(define (parse sexp)
  (cond
    [(number? sexp)(num sexp)]
    [(list? sexp)
     (case (first sexp)
       [(+) (add (parse (second sexp))
                 (parse (third sexp)))]
       [(-) (sub (parse (second sexp))
                 (parse (third sexp)))])]))

那么请您帮忙,因为导致我上述测试的解析函数失败了吗? 谢谢。

解析器是远离一个完整的,所以试图处理实际执行with是不是你应该尝试呢。 如果您是在某堂课的背景下上课,那么您肯定需要咨询课程工作人员。 如果您自己尝试此操作,则在开始其余代码之前,需要慢慢进行并确保解析器正常工作。

可以帮助您解决这一问题的资源是我的课堂笔记 ,其中包含此类解析器的示例。 (顺便说一句,我今天只需要介绍材料中的确切要点。)但是,如果您确实使用它,那么您应该注意,它在许多方面与PLAI代码有所不同-该语言是一种类型化语言,不简单的计划; 我们编写的解析器使用match ,整个程序的组织略有不同。 尽管如此,如果您自己执行此操作并陷入困境,它应该可以使您大致了解如何进行。

实际上,如果您继续阅读,

就在我们认为已经完成时,我们发现上面的几个测试用例(您能确定哪个?)会生成一个自由标识符错误。

他解释了为什么“ with”表达式失败。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM