2009-09-20 5 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 ** выглядит необычно, не означает ли вы ** завершить ** или ** перерыв **? – Ladislav

+0

Или, может быть, вы имели в виду ** конец пропустить **? – Ladislav

+0

На самом деле, я думаю, что часть ** skip end ** просто лишняя. – Ladislav

 Смежные вопросы

  • Нет связанных вопросов^_^