% PCL1 WS2004/2005 Uebungen 12 % Hier findet ihr den vollstaendigen Kode % aus den Folien der Vorlesung "Shift-Reduce-Parsing" brule([vp,np|X], [s|X]). brule([n,det|X], [np|X]). brule([v|X], [vp|X]). brule([Word|X], [Cat|X]) :- word(Word, Cat). word(a, det). word(man,n). word(sleeps,v). reduce(Stack, ReducedStack) :- brule(Stack, Stack2), reduce(Stack2, ReducedStack). reduce(Stack, Stack). shift(Stack, [W|Rest], [W|Stack], Rest). shift_reduce([], Stack, Stack). shift_reduce(String, Stack, Result) :- shift(Stack, String, NewStack, NewString), reduce(NewStack, ReducedStack), shift_reduce(NewString, ReducedStack, Result).