首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一阶逻辑公式的解析算法

一阶逻辑公式的解析算法
EN

Stack Overflow用户
提问于 2014-05-18 21:39:29
回答 1查看 1.5K关注 0票数 1

我正在尝试编写一阶(谓词)逻辑将公式转换为抽象语法树的算法。对于命题逻辑,我使用了分流码算法,但是对于一阶逻辑,它并不是开箱即用的,因为括号可以用于对谓词(或函数)的范围进行分组或指定范围。是否有一个通用的调车场算法,可以处理这一特殊的复杂?

作为参考,我试图解析的字符串如下所示:

代码语言:javascript
复制
"AxEy(P(x) & R(x,y)) -> R(f(a),b)"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-19 05:27:57

开括号是谓词作用域或函数参数列表分隔符,当且仅当它紧跟在谓词或函数之后。如果用于分组,则必须紧跟前缀或infix运算符或另一个开括号。

如果不能预先识别函数名,这并不重要,只要它们必须有名称;名称后面的括号要么是谓词作用域,要么是参数列表分隔符。当然,能够识别谓词是有帮助的。

当您将括号推到堆栈上时,需要标记它,以便在以后弹出与其对应的关闭括号时,可以创建正确的AST节点。如果是谓词作用域石斑鱼或参数列表石斑鱼,则需要将谓词/函数作为AST的一部分;它就在堆栈上的开括号下面。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23727146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档