-1

ネストされた配列でネストされた括弧を使用してテキストを変換する最も効率的な形式はどのようになりますか? 次に例を示します。

$input="((A = 8) AND((BC > 5 OR DE < 3) OR (FG = ALPHA))"

$output=array(
    [A>] => 8,
    [AND] =array(
             [BC>]=>5,
             [OR]=array([DE<]=>3)
              ),
    [OR]=>array([FG=]=>alpha)

)

または、役立つ別の解決策

$output=array(
    [A] =>array(['operator']=>'>',['value']=>8),
    [AND] =array(
             [BC>]=array(['operator']=>'>',['value']=>5),
             [OR]=array([DE]=>array(['operator']=>'<',['value']=>3))
              ),
    [OR]=>array([FG]=>array(['operator']=>'=',['value']=>3))

)
4

1 に答える 1

1

次のようになると思います (他の選択も可能ですが、ステートメントを評価したい場合、これはうまく機能すると思います)。

$operand = array("sum", array(
    "op1" => array("sum", array(
        "op1" => array("lit", "A")
        "op" => "AND"
        "op2" => array("lit", "8")
    )),
    "op" => "AND"
    "op2" => array("sum", array(
        "op1" => array("sum", /* .. */)
        "op" => "OR"
        "op2" => array("sum", /* .. */)
    ))
))

あなたの文法は:

sum: operand operation operand
operand: sum | lit
lit: string
operation: OR | AND | = | < | >
于 2013-10-23T09:53:25.420 に答える