代码之家  ›  专栏  ›  技术社区  ›  user310291

用[结束]规则重新绑定/红色分析

  •  3
  • user310291  · 技术社区  · 5 年前

    我试图从头开始理解parse,所以不要告诉我在本例中使用split。

    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 回复  |  直到 5 年前
        1
  •  4
  •   rebolek    5 年前

    to end 做了,但后来你 skip 你已经到了终点,所以 跳过 失败。看到这个:

    >> parse sentence [any [[any space] copy text [to space | to end ] (print text) skip]]
    This
    is
    a
    sentence
    
        2
  •  1
  •   sqlab    5 年前

    一个没有结束和结束的替代解决方案

    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"]