如何将逻辑解析为文本到数据结构中

时间:2015-12-10 14:19:23

标签: php data-structures lexical-analysis

给出字符串

{A} AND ({B} OR {C} OR ({D} AND {E}))

如何将其解析为可用的数据结构?

我目前有

$tokens = preg_split(
    '/( AND | OR |\)|\()/',
    $rules[0]['option_rule'],
    -1,
    PREG_SPLIT_DELIM_CAPTURE
);

foreach ($tokens as $token) {
    if (empty($token)) {
        continue;
    }

    $token = trim($token);

    $special = ['(', ')', 'AND', 'OR'];

    // do something with the token?

}

但不知道如何处理多个级别。

2 个答案:

答案 0 :(得分:0)

有些想法可能会起作用,1 = AND,0 = OR

array(
    '{A}' => 1,
    array(
        '{B}' => 0,
        '{C}' => 0,
        array(
            '{D}' => 1,
            '{E}' =>
        )
    )
);

答案 1 :(得分:0)

通用解决方案是指定语法规则并创建可以使用语法处理/解析文本的词法分析器。例如:http://nitschinger.at/Writing-a-simple-lexer-in-PHP