2009-09-20 10 views

Répondre

5

Le troisième élément dans votre à Parse bloc n'est pas le charbon {. Il est une chaîne - cordes Rebol peuvent être délimitées « ... » ou {...}

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

Pour analyser le bloc, vous avez besoin avec succès à la recherche d'une chaîne:

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 ] 
    ) 
] 

recueillera les noms dans les noms de blocs et adresses dans les adresses de bloc. Cette réponse ne fonctionne cependant pas dans Rebol3. Je ne sais pas pourquoi pas.

+0

J'ai testé votre code dans R3, et en fait, cela fonctionne. Cependant, la partie "skip end **" a l'air inhabituelle, n'entendez-vous pas ** fin ** ou ** break **? – Ladislav

+0

Ou, peut-être que vous vouliez dire ** fin skip **? – Ladislav

+0

En fait, je suppose que la partie ** skip end ** est juste superflue. – Ladislav

Questions connexes