2009-06-29 2 views
2

복사 : http://www.rebol.com/docs/core23/rebolcore-15.html#section-8 "REBOL 구문 분석 : 공백을 취급하고 나는 15 장 읽어 VAR

spacer: charset reduce [tab newline #" "] 
spaces: [some spacer] 
rule: ["a" spaces "b" spaces "c"] 
parse/all "a b c" rule 

확인하지만 난 규칙을 변경하는 경우에 단지

rule: ["a" spaces copy varb to spaces "c"] 
parse/all "a b c" rule 

REBOL 콘솔 오류 출력 :

** Script Error: Invalid argument: some spacer 
** Where: halt-view 
** Near: parse/all "a b c" rule 
>> 

왜?

감사합니다.

답변

4

REBOL 2에서 PAR의 TO 연산의 인수는 복잡한 규칙 일 수 없습니다. 리터럴 값 또는 문자 집합이어야합니다. 코드 [to spaces][to [some spacer]]과 동일하며 작동하지 않습니다. 귀하의 예에서는 [to spaces][to spacer spaces]으로 변환 할 수 있으며 정상적으로 작동합니다.

[to [some spacer]][any non-spacer]으로 리팩터링하는 방법이 대부분 있습니다. 여기서 비 스페이서는 스페이서 문자 세트의 보수입니다.

이 문제는 REBOL 3에서 수정 될 예정이지만 아직 해결되지 않았으며 유니 코드로 인해 문자 세트를 보완하는 것도 효과가 없습니다. 지금 REBOL 2를 붙이십시오.