拒绝PARSE规则以匹配至少2#[无]的首次出现

时间:2019-02-07 16:25:01

标签: parsing rebol

有关字符串大小写,请参见similar question

在R3-Alpha中,我尝试使@sqlab响应适应于块情况:

parse [x x x x #[none] a #[none] #[none] b] [to [none! none!] ??]

我希望??: [#[none] #[none] b],但得到

** Script error: PARSE - invalid rule or usage of rule: none!

这是正确的结果,我的期望是错误的吗?还是一个错误?

1 个答案:

答案 0 :(得分:1)

我只能展示Red和Rebol2的解决方案。由于规则中的单词会自动减少,因此您必须屏蔽它们。

红色

>> parse [x x x x _ a _ _ b] [to [ '_ '_] y: ]
== false
>> 
>> y
== [_ _ b]

Rebol2

>> parse [x x x x _ a _ _ b] [some [r: [ '_ '_  ] (y: r) | skip]   ]
== true
>> y
== [_ _ b]

HostileFork 编辑问题后,Red的解决方案就这样

>> parse [x x x x #[none] a #[none] #[none] b] [to [none! none!] y:] 
== false
>> y
== [none none b]
>> 
根据 giuliolunati

注释中的问题的

例子

>> parse  [x x x x 0 a 1 2 b]  [to [integer! integer!] y:]
== false
>> y
== [1 2 b]