Используйте «разбор» на красном языке с числовым блоком

#red

Вопрос:

Я имитирую следующий код, который исходит от Helpin’Red

 a: "big black cat"
parse a [ to "black" insert "FAT "]
print a
big FAT black cat
 

с моей:

 b: [1 2 3]
parse b [to 2 insert 4]
print b
4 4 1 2 3 ;; but what I mean is "1 4 2 3".
 

Что не так с моим кодом? И как получить желаемый результат?

Ответ №1:

  1. to сопоставляет входные данные с указанным правилом до тех пор, пока оно не будет выполнено успешно или не будет достигнут конец.
  2. 2 соответствует заданному количеству раз.
  3. insert 4 вставляет значение в текущую позицию и всегда завершается успешно.
    1. Это означает, что 2 insert 4 вставляет два 4 » s » и добивается успеха.
    2. to «продвигает» ввод до совпадения 2 insert 4 : я говорю «продвигает», потому что на самом деле это не так, вставка происходит в начале.

Чтобы достичь того, чего вы хотите, вам нужно сбежать 2 , используя quote :

 >> also block: [1 2 3] parse block [to quote 2 insert 4]
== [1 4 2 3]
 

К вашему сведению, у Parse есть официальная справочная документация.

Комментарии:

1. Большое спасибо за ваше решение и ссылку на parse !