2

我阅读了第 15 章: http ://www.rebol.com/docs/core23/rebolcore-15.html#section-8 “

spacer: charset reduce [tab newline #" "]
spaces: [some spacer]
rule: ["a" spaces "b" spaces "c"]
parse/all "a b c" rule

可以,但是如果我将规则更改为

rule: ["a" spaces copy varb to spaces "c"]
parse/all "a b c" rule

Rebol 控制台输出错误:

** Script Error: Invalid argument: some spacer
** Where: halt-view
** Near: parse/all "a b c" rule
>>

为什么 ?

谢谢。

4

1 回答 1

4

在 REBOL 2 中,PARSE 的 TO 操作的参数不能是复杂的规则——它必须是文字值或字符集。该代码[to spaces]等效于[to [some spacer]]并且不起作用。在您的示例中,您可以转换[to spaces][to spacer spaces]它应该可以正常工作。

有一些技巧可以解决这个问题,主要涉及[to [some spacer]][any non-spacer]非间隔符重构为间隔符字符集的补充。

预计这将在 REBOL 3 中修复,但该修复尚未完成,并且由于 Unicode,补充字符集效果不佳。现在坚持使用 REBOL 2。

于 2009-06-30T19:43:33.297 回答