ребол / красный разбор с [до конца] правилом - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь понять синтаксический анализ с нуля, поэтому не говорите мне использовать сплит в этом случае.

sentence: "This is a sentence"

parse sentence [
    any [
        [any space] copy text [to space | to end] skip
        (print text)
    ]
 ]

Почему я не получаю последнее слово в предложении, а только:

This
is
a

Не работал [to end]?

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Альтернативное решение без и до

sentence: "This is a sentence"
space:  charset " "
chars: complement space

parse sentence [
    any [
       any space 
       copy text some chars
       (print text) 
    ]
]

В Rebol2 вы должны использовать parse / all, если вы имеете дело со строками, но самое простое решение в Rebol2 для разделения -

>> parse sentence none
== ["This" "is" "a" "sentence"]
0 голосов
/ 21 января 2019

to end сработало, но тогда у вас есть skip, и вы уже в конце, поэтому skip не удается.Смотрите это:

>> parse sentence [any [[any space] copy text [to space | to end ] (print text) skip]]
This
is
a
sentence
...