我想弄清楚如何將這種格式的字符串解析爲任意深度的數據結構樹。將字符串解析爲樹結構?
"{{Hello big|Hi|Hey} {world|earth}|{Goodbye|farewell} {planet|rock|globe{.|!}}}"
[[["Hello big" "Hi" "Hey"]
["world" "earth"]]
[["Goodbye" "farewell"]
["planet" "rock" "globe" ["."
"!"]]]]
我已經試過一些這方面的正則表達式玩(如#「{([^ {}] *)}」),但我什麼都嘗試過,似乎「扁平化」樹成列表的大名單。我可能從錯誤的角度來處理這個問題,或者一個正則表達式不適合這項工作。
感謝您的幫助!
因此,擁有該語法之後,有必要使用解析器生成器來生成基於此語法的解析器,不是嗎?此外,解析器應該用一個句子喂,然後樹可以被放棄,不是嗎? – bikashg 2011-03-18 17:29:43
@Bikash - 是的,如果你願意的話,你可以*使用解析器生成器(比如yacc或bison),或者你可以編寫自己的遞歸下降解析器(它非常簡單)。如果您使用yacc或bison,則需要編寫實際構建樹的操作。我不認爲yacc /野牛給你自己的樹。他們只是識別語法。 – 2011-03-18 18:50:23