我想弄清楚如何将这种格式的字符串解析为任意深度的数据结构树。将字符串解析为树结构?
"{{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