我正在与您联系,因为我目前需要解析(可以转录为)布尔表达式,以便说明哪些成员必须为 1。
为了清楚这个主题,这里有一个例子。我有这个等式:
equ = ((((SIPROT:1 INTERACT (((((((ACTIVE_drawing OR ACTIVE_hd) OR ACTIVE_dm) OR PDIFF_drawing) OR NDIFF_drawing) NOT polyact_sign_mkr) NOT ((COPY (NWELL_drawing OR NWELL_hd)) AND (((((ACTIVE_drawing OR ACTIVE_hd) OR ACTIVE_dm) OR PDIFF_drawing) OR NDIFF_drawing) NOT polyact_sign_mkr))) NOT ((COPY (PPLUS_drawing OR PPLUS_hd)) OR (COPY ((NPLUS_drawing OR NPLUS_dm) OR NPLUS_hd))))) INSIDE RHDMY_drawing) INTERACT ((((COPY ((NPLUS_drawing OR NPLUS_dm) OR NPLUS_hd)) AND (((((ACTIVE_drawing OR ACTIVE_hd) OR ACTIVE_dm) OR PDIFF_drawing) OR NDIFF_drawing) NOT polyact_sign_mkr)) INTERACT (N(((((ACTIVE_drawing OR ACTIVE_hd) OR ACTIVE_dm) OR PDIFF_drawing) OR NDIFF_drawing) NOT polyact_sign_mkr) INTERACT ((COPY (PPLUS_drawing OR PPLUS_hd)) AND (((((ACTIVE_drawing OR ACTIVE_hd) OR ACTIVE_dm) OR PDIFF_drawing) OR NDIFF_drawing) NOT polyact_sign_mkr)))) NOT NLDEMOS_FINAL)) OUTSIDE (COPY GO2_25_drawing))
这是描述一个形状的方程式,涉及到其他几个人的绘图,以不同的“颜色”绘制。
所以我的方程的输入是“颜色”,ACTIVE_drawing
例如。我的目标是说,有了这个等式,哪些颜色是强制性的、禁止的或可选的equ=1
。这就是我说真值表的原因。
该方程不是真正的布尔值,但可以处理为。INTERACT
可以替换为AND
,COPY
可以删除,可能还需要其他操作。
所以我的问题不是为了有一个“真正的布尔”而替换我的方程,而是为了正确解析布尔表达式以获得相应的真值表而实现的算法。
你们有什么提示吗?我正在使用 Perl 来生成方程,所以我想保留它,但如果你知道另一个工具可以接受我的输入来处理它,为什么不呢。