说我有兴趣创建一个基于JVM的Prolog实现。 我想知道是否可以使用现有的JVM语言来模拟Prolog语法,而不是依赖于Prolog解析器,该解析器将带有Prolog代码的文本文件作为输入。
在Prolog中,您可以定义事实,规则,而棘手的部分是您还可以在非常细粒度的级别定义新运算符:您可以指定运算符位置,优先级和关联性。
以下一些简单示例:
事实:
father(john, peter).
mother(susan, peter).
male(john).
...
规则:
parent(X, Y) :- father(X, Y).
parent(X, Y) :- mother(X, Y).
算:
op(100,xfx, is-father-of)
使用运算符规则:
X is-father-of Y :- male(X), parent(X,Y).
我看了一下Groovy但it does not seem to allow to define new operators。据我所知,Scala允许定义运算符,但我不认为静态类型的语言会对我有所帮助。是否有JVM语言可以帮助我做到这一点?
如果我想在JVM中执行此操作,我是否会使用Prolog解析器?