【发布时间】:2013-03-18 09:05:38
【问题描述】:
我目前正在实施一个基于 Web 的 Scheme 环境,以供大家欢笑。在实现解析器时,我偶然发现了一个奇怪的现象:一些 Scheme 实现声明读取数字的数字直到遇到分隔符,但他们也声称双引号是有效的分隔符。成功评估 123"abc" 对我来说似乎很奇怪,但 Racket 似乎做到了,依次显示 123 和 "abc"。
困惑,我启动了 Gimp 并进入了它的 Script-Fu 控制台,下面是 Guile Scheme。给它同样的表达,它抱怨一个未绑定的值;所以它试图将其解析为符号?
我尝试将 JScheme 作为“第三方意见”。它还抱怨一个未定义的变量。
TL;DR:Scheme 的行为应该是什么?
旁注:鉴于后两者的抱怨,我尝试了以下方法:
(define 123"abc" 10)
123"abc"
它评估为10。我很困惑。双引号不应该导致解析器退出而不是分配符号吗?
【问题讨论】:
-
R5RS 或 R6RS 中描述了 Scheme 的语法供参考。我希望 123"abc" 被解析为一个数字和一个字符串。但最好咨询各自的实现维护者。最好由他们来回答。这个问题很有趣,但您很可能会在那里得到答案。
标签: parsing lisp scheme implementation interpreter