Parseo de arbol con tags

Bernardo Suarez bsuarez en ebs.cl
Vie Ene 30 16:44:35 CLST 2004


Ricardo Muñoz A. wrote:

>On Fri, 30 Jan 2004 11:08:41 -0300
>Bernardo Suarez <bsuarez en ebs.cl> wrote:
>
>  
>
>>Tengo que parsear un string y meterlo en una estructura más manejable.
>>El problema es el formato... Ej:
>>[{"nombre campo",valor},{nombre campo,[{nombre campo,valor},{nombre 
>>campo,valor}]}]
>>
>>El formato de este mensaje no lo puedo cambiar, por que lo genera una 
>>aplicación propietaria.
>>
>>Eso me define una estructura de árbol, y quiero guardarlo en un arreglo 
>>de arreglos, o mejor aún en un objeto. La estructura donde lo guardo no 
>>me complica tanto como el parseo.
>>
>>Se me habia ocurrido que puede no ser caro transformar eso (usando algo 
>>tan simple como replace) en xml y luego usar una clase como XPath para 
>>accesar los valores.
>>
>>Si alguien tiene una idea mejor....
>>
>>Gracias
>>    
>>
>
>quizas con expresiones regulares se podria hacer:
>
>eregi("^[{\"([a-z]+)\",([1-9]+)},{([a-z]+),[{([a-z]+),([1-9]+)},{([a-z]+),([1-9]+)}]}]",$mensaje,$arreglo)
>
>luego obtienes los valores mediante $arreglo[1],$arreglo[2],etc.
>
>más info en:
>http://cl.php.net/manual/es/ref.regex.php
>
>  
>
Regexp me sirve para parsear los nodos terminales que son estructuras 
fijas, pero no me sirve para nodos que contienen otros nodos.  (o por lo 
menos no al niverl que me manejo yo en regexp).

Tendría que hacer una máquina de estados o algo similar...