我正在尝试在Prolog中编写DCG语法来执行此操作:
kkk ... k --> N * (k)
k
可以是任何地方(例如“a”,“ab”,“abc”)。
左边是我想要消费的东西,右边是我想要生成的东西。
这对DCG来说是否可能?
我试图用一个字母来做最简单的情况,如下:
s(N) --> a(N).
a(0) --> [].
a(R) --> [R], [*], [a].
a(M) --> [a], a(N), {M is N + 1}.
eval(X) :-
s(_, X, []).
但我不确定这是正确的方法。
感谢您的帮助。