Круто, что диалект Rebol PARSE достаточно обобщен, чтобы можно было сопоставлять и извлекать шаблоны из символических структур, а также из строк.Например:
; match a single "a" character, followed by any number of "b" chars
>> string-rule: ["a" some "b"]
>> parse "abb" string-rule
== true
>> parse "aab" string-rule
== false
; look for a single apple symbol, followed by any number of bananas
>> block-rule: ['apple some 'banana]
>> parse [apple banana banana] block-rule
== true
>> parse [apple apple banana] block-rule
== false
Но, скажем, я ищу блок, содержащий символ яблока, а затем любое количество строк символов, соответствующих string-rule
:
; test 1
>> parse [apple "ab" "abbbbb"] mixed-rule
== true
; test 2
>> parse [apple "aaaa" "abb"] mixed-rule
== false
; test 3
>> parse [banana "abb" "abbb"] mixed-rule
== false
Какя бы сформулировал такой mixed-rule
?Глядя на документацию, можно предположить, что можно использовать INTO:
http://www.rebol.net/wiki/Parse_Project#INTO
Казалось бы, естественный ответ не работает:
>> mixed-rule: ['apple some [string! into ["a" some "b"]]]
Пока он проходитtest 1 и правильно возвращает false для теста 3, неправильно возвращает true в тесте 2. Это моя ошибка или ошибка в Rebol (я использую r3 A111)?