2009-09-20 30 views

回答

5

第三個元素在你的到解析塊不是炭{。這是一個 - REBOL字符串可以劃定「......」{...}

type? to-parse/3 
== string! 
to-parse/3 
{ 
    String name 
    String lastName 
    Address home 
    Address business 
} 

要成功解析塊,你需要尋找一個字符串:

entity-rule: ['entity word! string! to end] 
parse to-parse entity-rule 
== true 
5
to-parse: [entity Person { 
    String name 
    String lastName 
    Address home 
    Address business 
}] 

person-rule: [ 
    thru "String " copy name to newline (append names name) thru newline | 
    thru "Address " copy address to newline (append addresses address) thru newline | 
    skip end 
] 

parse to-parse [ 
    'entity 'person 
    set details string! (
     names: copy [] addresses: copy [] 
     parse details [ some person-rule ] 
    ) 
] 

將收集的名稱爲塊名稱和地址到塊地址。 這個答案在Rebol3中不起作用。不知道爲什麼不。

+0

我在R3中測試了你的代碼,實際上它工作正常。然而,** skip end **部分看起來很不尋常,您是不是指**結束**或** break **? – Ladislav

+0

或者,也許你的意思是**結束跳過**? – Ladislav

+0

實際上,我猜** skip end **部分是多餘的。 – Ladislav