2010-03-09 3 views
1

Я перечитал главу http://www.rebol.com/docs/core23/rebolcore-15.html о любом и разобрал, но не могу добиться синтаксического анализа такого рода иерархической структуры: возможно ли это?Как разобрать иерархическую структуру в Rebol?

<Multipage> 
<tab id=1> 
    <box id=1> 
    </box> 
</tab> 
<tab id=2> 
    <box id=2> 
    Hello 
    </box> 
</tab> 
<tab> 
</tab> 
<tab> 
</tab> 
</Multipage> 

ответ

1

Да, это возможно, и не очень трудно:

data: {...} 

ws-chars: charset " ^/^M^-" 
ws: [any ws-chars] 

rule: [ 
    ws <Multipage> any [ 
     ws "<tab" opt [ws "id=" copy id to ">" (print ["tab id:" id])] ">" any [ 
      ws "<box" opt [ws "id=" copy value to ">" (print ["box id:" id])] ">" 
       opt [copy text to "<" (if text [?? text])] 
      </box> 
     ] 
     ws </tab> 
    ] 
    ws </Multipage> ws 
] 

parse/all data rule 

Выполнение этого кода, вы получите в качестве вывода:

tab id: "1" 
box id: "1" 
text: "^/ " 
tab id: "2" 
box id: "2" 
text: "^/ Hello^/ " 
+0

Кажется здорово попробует –

2

XML-синтаксический анализ сценарий Gavin Маккензи в http://www.rebol.org/view-script.r?script=xml-parse.r1 будет анализировать большинство данных XML. Поскольку это обобщенное решение, это, по понятным причинам, более сложное, чем набор правил анализа для конкретного XML-файла.

+0

ок спасибо попробую. –