减少解析的布尔语法

时间:2015-08-04 10:53:38

标签: regex parsing boolean grammar

我为条件语句实现了一个解析器。完整程序的目的是找到符合条件的值。例如,在句子中:“a> 0 AND b == 10”,我的程序会建议设置a = 1和b = 10。有时它会变得更复杂,例如“a> 0和a + b == 10”,但我现在正在解决它。

我最担心的是那些正式谬误的句子,所以必须将它们丢弃,因为没有解决方案。例如,在“a == 0 AND a> 0”的情况下。此示例易于处理,但如果您考虑嵌套,例如“a == 0 AND((b> 3 AND a == 10)OR(b< 2 AND a == 10))”。

我想我能够翻译如下:

b> 3 => P,b< 2 => ¬P,a == 0 => Q,a == 10 => ¬Q

所以前面的例子是:“Q AND((PAND¬Q)OR(¬P和Q))”。

一旦我能得到这样的句子,真正的问题是:是否有算法或方法来减少句子并直接知道它是公理还是谬误?或者它是创建完整T / F图表并检查所有结果是否为假的最佳方法?

1 个答案:

答案 0 :(得分:0)

似乎你可以为每个变量使用一组间隔。

F.e。条件b == 2 OR a > 4给出了间隔b => [2]a => (4, ∞)的结合。

OR运算符给出了集合的联合,f.e。 a < 5 OR a > 10给出(-∞, 5) ∪ (10, ∞); AND运算符给出交集,即f.e。 a > 5 AND a < 10提供(5, 10)

现在,在表达式处理的某个阶段设置空集,可以诊断出不一致的条件。