Estoy tratando de averiguar cómo analizar una cadena en este formato en un árbol como la estructura de datos de profundidad arbitraria.¿Analizar cadena en una estructura de árbol?
"{{Hello big|Hi|Hey} {world|earth}|{Goodbye|farewell} {planet|rock|globe{.|!}}}"
[[["Hello big" "Hi" "Hey"]
["world" "earth"]]
[["Goodbye" "farewell"]
["planet" "rock" "globe" ["."
"!"]]]]
He intentado jugar con algunas expresiones regulares para ello (como # "{([^ {}] *)}"), pero todo lo que he intentado parece "aplanar" el árbol en una gran lista de listas Podría estar acercándome a esto desde el ángulo equivocado, o tal vez una expresión regular simplemente no es la herramienta adecuada para el trabajo.
Gracias por su ayuda!
Entonces, después de tener esa gramática, es necesario usar un generador de analizador para generar el analizador basado en esta gramática, ¿no es así? Además, el analizador debe ser alimentado con una oración y luego el árbol podría ser cedido, ¿no? – bikashg
@Bikash - Sí y No. Usted * puede * usar un generador de analizador sintáctico (como yacc o bison) si lo desea, o puede escribir su propio analizador sintáctico de descenso recursivo (es notablemente simple). Si usa yacc o bison, necesita escribir acciones que realmente construyan el árbol. No creo que yacc/bison te dé el árbol por sí mismo. Ellos simplemente reconocen la gramática. –