看起來是Rebol 2解析邏輯中的一個錯誤。它看到第一個<
,然後開始解釋隨後的輸入,就好像它是一個TAG!鍵入(如在HTML標籤中),直至找到結尾>
。注意這一點:
>> length? op-map
== 2
>> op-map/2/1
== <]
<= [>
>> type? op-map/2/1
== tag!
所以要雷博爾的2頭腦,這是類似於如果你這樣寫的線沿線的東西更多:
op-map: [
>= [<a href="http://hostilefork.com">]
]
而且它不只是蓋帽!有這個問題,它發生在PAREN!太:
>> op-map: first [(>= (<) <= (>))]
== (>= (<) <= (>))
>> length? op-map
== 2
我不完全知道什麼是規則是正在在雷博爾3.這項工作它不禁止的標籤括號內:
>> print <[o]>
== <[o]>
...但你不能使用源無與倫比的結束括號,同時打開那些被容忍:
>> print <]>
** Syntax error: missing "[" at "end-of-block"
** Near: (line 1) print <]>
>> print <[>
<[>
...但你可以用無與倫比的閉幕者,當他們引號內:
>> print <"]">
<"]">
更奇怪的是,你可以創建只包含一個無與倫比的封閉編程括號標記:
>> print to-tag "]"
<]>
因此,儘管它看起來有中給出的那種情況下更好的行爲,這是很難說,如果有在「修復」方面,它確實是一個形式化的邏輯。新規則可能有類似但更微妙的一類問題。在此期間,爲安全起見,在雷博爾2中,這些運營商打交道時,你可以嘗試從字符串創建它們:
op-map: compose/deep [
(to-word ">=") [(to-word "<")]
(to-word "<=") [(to-word ">")]
]
它更詳細。但是,字符串分隔符的存在將阻止解析器嘗試將<
和>
解釋爲標記分隔符。
嗯...好吧,但這不是很自我記錄。絕對看起來像某人會進去,只是刪除,如果你沒有留下嚴厲的評論。 :-(希望這將得到更加統一的理解! – HostileFork
那麼,正如你所建議的那樣 - 它在R3中正常工作,所以它已經被理順了,除非它有2.7.9 ... – rgchris