1

私はまだParseルールをマスターしていません:)

これを解析するにはどうすればよいですか?

to-parse: [entity Person {
    String name
    String lastName
    Address home
    Address business
}]

これは機能しません:

entity-rule: ['entity word! #"{" to end]
>> parse to-parse entity-rule
== false
>>
4

2 に答える 2

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 では機能しません。よくわかりません。

于 2013-02-26T07:19:08.477 に答える
5

to-parseブロックの 3 番目の要素は char {ではありません。これは文字列です-- 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
于 2009-09-21T07:06:25.493 に答える