Sto cercando di capire come analizzare una stringa in questo formato in una struttura ad albero come dati di profondità arbitraria.Scorretta stringa in una struttura ad albero?
"{{Hello big|Hi|Hey} {world|earth}|{Goodbye|farewell} {planet|rock|globe{.|!}}}"
[[["Hello big" "Hi" "Hey"]
["world" "earth"]]
[["Goodbye" "farewell"]
["planet" "rock" "globe" ["."
"!"]]]]
Ho provato a giocare con alcune espressioni regolari per questo (come # "{([^ {}] *)}"), ma tutto quello che ho provato sembra "appiattire" l'albero in una grande lista di liste. Potrei avvicinarmi a questo da un angolo sbagliato, o forse una regex non è lo strumento giusto per il lavoro.
Grazie per il vostro aiuto!
Quindi dopo aver avuto quella grammatica, è necessario utilizzare un generatore di parser per generare un parser basato su questa grammatica, non è vero? Inoltre, il parser dovrebbe essere alimentato con una frase e quindi l'albero potrebbe essere ceduto, no? – bikashg
@Bikash - Sì e No. È possibile * utilizzare un generatore di parser (come yacc o bisonte) se lo si desidera, oppure è possibile scrivere il proprio parser ricorsivo-discendente (è straordinariamente semplice). Se usi yacc o bison, devi scrivere azioni che costruiranno effettivamente l'albero. Non penso che yacc/bison ti dia l'albero da solo. Semplicemente riconoscono la grammatica. –