Правило REBOL PARSE соответствует первому вхождению не менее 2 # [нет] с - PullRequest
0 голосов
/ 07 февраля 2019

См. аналогичный вопрос для строкового регистра.

В 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 голосов
/ 08 февраля 2019

Я могу просто показать решение для 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]
...