Javascript 在AND/OR中将布尔逻辑一次转换为2子句
为这个尴尬的标题道歉,我想不出更好的了 我有布尔逻辑字符串,比如Javascript 在AND/OR中将布尔逻辑一次转换为2子句,javascript,java,sql,arrays,transformation,Javascript,Java,Sql,Arrays,Transformation,为这个尴尬的标题道歉,我想不出更好的了 我有布尔逻辑字符串,比如 和( 列。包含。5, 列。包含。6, 或( 列。相等。1, 列。相等。2, 列。相等。3, 及( 列。包含。7, 列。包含。8 ) ), 列。包含。4 ) 问题在于解析此语句的脚本一次只接受AND/OR中的两个子句。i、 e.和(条件1,条件2),但不是和(条件1,条件2,条件3)。这意味着任何具有2个以上条件的内容都需要进行适当的转换,以便只传入两个条件。我怎么能这样做?(正在努力修复缺陷,但需要临时解决方案) 我当前的想法是将
和(
列。包含。5,
列。包含。6,
或(
列。相等。1,
列。相等。2,
列。相等。3,
及(
列。包含。7,
列。包含。8
)
),
列。包含。4
)
问题在于解析此语句的脚本一次只接受AND/OR中的两个子句。i、 e.和(条件1,条件2),但不是和(条件1,条件2,条件3)。这意味着任何具有2个以上条件的内容都需要进行适当的转换,以便只传入两个条件。我怎么能这样做?(正在努力修复缺陷,但需要临时解决方案)
我当前的想法是将该字符串转换为一个数组,第0个元素是运算符([“AND”,column.contains.5,column.contains6,[“OR”,“column.equal.1],[column.equal.2],[column.equal.3],“AND”,column.contains.7,column.contains.8],[column.contains.4]
)。然后,每当一个数组有3个以上的元素时,我就会递归地分解条件2到n,直到它总是2个子句。这似乎正确吗
还是有更好的方法?
我给出的输入的期望输出是(保留逻辑):
和(
列。包含。5,
及(
列。包含。6,
及(
或(
列。相等。1,
或(
列。相等。2,
或(
列。相等。3,
及(
列。包含。7,
列。包含。8
)
)
)
),
列。包含。4
)
)
)
您的方法可能是最好的。我唯一能想到的另一种方法是创建一个新的解析器,但这似乎是不可能的。您的方法可能是最好的。我唯一能想到的另一种方法是创建一个新的解析器,但这似乎是不可能的。