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

ウィキペディアの記事を参照して理論的な背景を少し調べてから、使用する言語の既存のパーサーを取得し、演算子とその優先順位を定義します。

于 2012-08-09T12:40:54.560 に答える