我正在尝试为语言a ^ n b ^ 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([]) --> [].
例如,如果我输入ab(ab([]))
s(T,[a,a,b,b],[]).
请帮忙!
答案 0 :(得分:5)
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] ? ;
...