我有一个带有几个unix语句的字符串,与(, ), ||, &&, |
一起加入。我想按照它们在unix命令行中评估的顺序将它们分成数组(嵌套?)。我最好希望它们以前缀表示法,但任何事情都可以。
像
a --foo "b|a||r" && a -b || (a || a) | c | d
应该成为
["|", ["|", ["||", ["&&", "a --foo \"b|a||r\"", "a -b"], ["||", "a", "a"]], "c"], "d"]
(真的试图给出一个涉及所有可能性的例子。
我该如何处理?
我可以理解大多数流行的高级(OOP)语言(ruby,python等)中的代码,甚至伪代码都可以帮助。
答案 0 :(得分:0)
如果您考虑一下,该任务与解析数学表达式没有什么不同,例如: a * (b + c) / d
==> [/, [*, a, [+, b, c]], d]
。因此,您可以使用相同的工具:
您需要的是中缀解析器。
( Infix ,因为您的运算符在操作数之间:例如a && b
)
浏览Wikipedia article了解一些理论背景,然后获取您想要使用的语言的现有解析器,并定义运算符及其优先级。