2014-05-01 8 views
4

모두 RebolRed에, 두 PARSE 핵심 단어가 있습니다 : breakreject 비슷한 동작이 : 일치하는 루프 중 휴식 (예 : 어떤, 어떤으로는, 동안)의 차이는 실패를 표시reject 동안 break항상성공을 나타내는 것입니다. 문자 그대로 무엇을 의미하는지는 알지만 두 키워드 중 어느 것을 사용해야하는지에 대한 적절한 시나리오를 파악할 수 없습니다. 위의 코드에서 차이 구문 분석에 REJECT

blk: [ 1 #[none] 2 #[none] #[none] 4 5 6 #[none] ] count: 0 result: parse blk [ any [ remove none! insert 2 if ((count: count + 1) >= 2) break | skip ] ] probe blk ;will get [1 0 2 0 none 4 5 6 none] probe result ;will get false probe count ;will get 2 

어느 breakreject 또는 동일한 결과를 생성한다.

누구나 내게이 두 키워드의 차이점을 표시 할 수 있습니까?

답변

3

break에 의해 생성 된 진리 값은 반복 규칙의 최소 반복 횟수에 도달했는지 여부에 달려 있습니다.

>> parse "aaabbb" [ some [ "a" break ] to end] 
== true 

여기서 "a"는 적어도 한 번 이상 일치 한 다음 일부 규칙에서 벗어나 끝까지 계속되었습니다. 이것은 사실입니다.

>> parse "aaabbb" [ some [ "a" reject ] to end] 
== false 

여기서 "a"를 한 번 일치 시켰지만 거부로 인해 일부 규칙이 실패합니다.

자세한 내용은 Carl's blog을 참조하십시오.