我有一个命题逻辑公式
((a or b) and !d) or e -> c
怎么可能解析这个字符串,所以我可以制作一个真值树?
我想我应该用->
,and
和分割我的字符串or
,但它会弄乱括号。在拆分字符串之前如何保护每个括号?在做任何其他事情之前,我是否应该使用正则表达式拆分括号中的表达式?
对于我示例中的字符串,我想它应该创建一个嵌套数组,其中['or', a, b]
'deepest' 级别存储在 'next most deep level'['and', ['or', a, b]]
中。所以我的猜测是这个字符串应该被转换为一个数组
[
'implication'
[
'or',
[
'and',
[
'or',
'a',
'b'
]
],
'e'
],
'c'
]
其中每个数组由 3 个元素组成,其中第一个元素告诉操作员,接下来的两个元素告诉操作员应该处理哪些“命题”。
我不确定这是否是一个聪明的结构,但我想这可能是解析字符串的一种方法。
我研究了将中缀转换为后缀表示法或抽象语法树 (AST) 的调车场算法。我应该使用类似的东西来正确地做到这一点吗?