Hi TB, 

have a look at this one ...

REBOL []

test-cases: [
    "I have a fluffy kitty and a black lab" TRUE 
    "I have a fluffy kitty and a orange tabby" FALSE 
    "Where is my mangy mutt?" False 
    "Where can I buy a book on programming REBOL?" False
]

cat: [thru "orange" "tabby" | thru "fluffy" "kitty" ]
dog: [thru "mangy" "mutt" | thru "black" "lab" ] 

rule: [ cat dog | dog cat ] ; to be sure to catch them either way

foreach [str val] test-cases [
    prin [ str "(" val ") -> "]
    print parse str rule
] 

comment {
My first idea for 'rule was

rule: [ some [ cat (cat-found: true) | dog (dog-found: true) ]

Problems: 
- without them xxx-found: true you couldn't be
  sure, to not catch cat twice (sentence 2).
- a sentence with 'dog and 'cat in this order
  "I have a black lab and a fluffy kitty."
  would first find the kitty, and thus read over
  your dog. I _think_ there was a solution to
  this ...

Note: Parse capabilities have greatly improved in /View,
  and will be part of the next /Core release, too.
}
halt


I hope this helps

Ingo  

--  _     .                                _
ingo@)|_ /|  _| _  <We ARE all ONE   www._|_o _   _ ._ _  
www./_|_) |o(_|(/_  We ARE all FREE> ingo@| |(_|o(_)| (_| 
http://www.2b1.de/Rebol/                     ._|      ._|

Reply via email to