0

我有一个包含多个 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 等)的代码,甚至伪代码也会有所帮助。

4

1 回答 1

1

如果您考虑一下,该任务与解析数学表达式没有什么不同,例如a * (b + c) / d==> [/, [*, a, [+, b, c]], d]。因此,您可以使用相同的工具:

你需要的是一个中缀解析器

(中,因为您的运算符在操作数之间:例如a && b

浏览Wikipedia 文章以了解一些理论背景,然后为您想要使用的语言获取现有解析器并定义运算符及其优先级。

于 2012-08-09T12:40:54.560 回答