灵活的JVM语言,用于创建特定于域的语言?

时间:2016-03-20 10:17:19

标签: java prolog dsl jvm-languages

说我有兴趣创建一个基于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解析器?

0 个答案:

没有答案