Rebol/Red Parse:如何在2分之间复制



我希望能够在解析规则中的2分之间解析。对于一个有条理的例子:

src: {a b c d e f}
rule: [
    to "b" mark1: thru "e" mark2: 
    to mark1 copy text to mark2
]

这不起作用,文字包含" [",而不是我想要得到的:

b c d e

您正在尝试实现使用Parse复制的"愿望"。Parse的副本正在寻找模式,而不是将系列视为位置。

您可以通过Paren!在Paren!中逃脱,如果解析规则达到这一点,它将运行。

src: {a b c d e f}
rule: [
    to "b" mark1: thru "e" mark2: 
    (text: copy/part mark1 mark2)
    to end ;-- not strictly necessary, but makes PARSE return true
]
parse src rule

将为您提供b c d e

的文字

请注意,您都不会有两种方式,无论是复制还是与to。TO <series!>的意思是"寻找B",而不是"跳到B的位置"。因此,当您说to mark1时,您将召集另一场比赛。如果要将解析位置设置为Mark1中记录的特定位置,请在解析规则中使用:mark1

在红色

中工作的两个替代解决方案/规则
rule: [
   to "b" copy text thru "e" to end
]

 rule: [ to "b" collect  [keep thru "e"] to end]
 text: first parse src rule

最新更新