我正在尝试为语言a ^ nb ^ n创建一个解析树.
下面是我尝试过的,但它只是在不引用解析树的情况下变为真实.
%% a^n, b^n. ex) s([a,a,b,b],[]). = true
s --> a,s,b.
s --> [].
s(ab(S)) --> a,s(S),s.
s([]) --> [].
Run Code Online (Sandbox Code Playgroud)
例如,ab(ab([]))
如果我输入,我想打印s(T,[a,a,b,b],[]).
请帮忙!
s(ab(S)) --> a,s(S),s.
应该s(ab(S)) --> [a],s(S),[b].
会给你正确的结果:
s([]) --> [].
s(ab(S)) --> [a], s(S), [b].
| ?- phrase(s(L), [a,a,b,b]).
L = ab(ab([])) ? ;
no
| ?- phrase(s(ab(ab([]))), L).
L = [a,a,b,b]
yes
| ?- phrase(s(L), T).
L = []
T = [] ? ;
L = ab([])
T = [a,b] ? ;
L = ab(ab([]))
T = [a,a,b,b] ? ;
L = ab(ab(ab([])))
T = [a,a,a,b,b,b] ? ;
L = ab(ab(ab(ab([]))))
T = [a,a,a,a,b,b,b,b] ? ;
...
Run Code Online (Sandbox Code Playgroud)