2:- module(parse_ccgcat,[parse_ccgcat/2, gen_ccgcat/2]). 3
4parse_ccgcat(Cat,Term):-
5 atom(Cat),
6 atom_codes(Cat,Codes),
7 mcat(Term,Codes,[]), !.
8
9gen_ccgcat(Term,Cat):-
10 mcat(Term,Codes,[]), !,
11 atom_codes(Cat,Codes).
12
13
14mcat(backward(Cat1,Cat2)) --> cat(Cat1), cat(Cat2).
15mcat(backward(Cat1,Cat2)) --> cat(Cat1), [92], cat(Cat2).
16mcat(forward(Cat1,Cat2)) --> cat(Cat1), [47], cat(Cat2).
17mcat(X) --> cat(X).
18
19cat(backward(Cat1,Cat2)) --> [40], cat(Cat1), cat(Cat2), [41].
20cat(backward(Cat1,Cat2)) --> [40], cat(Cat1), [92], cat(Cat2), [41].
21cat(forward(Cat1,Cat2)) --> [40], cat(Cat1), [47], cat(Cat2), [41].
22
23cat(q([])) --> [81].
24cat(s([])) --> [83].
25cat(s([F])) --> [83,91], feature(F), [93].
26cat(n([])) --> [78].
27cat(punct([])) --> [46].
28cat(conj([])) --> [99,111,110,106].
29cat(np([])) --> [78,80].
30cat(np([])) --> [78,80,91], feature(_), [93].
31cat(pp([])) --> [80,80].
32
33feature(X) --> {var(X)}, [88].
34feature(X) --> {f(X), atom_codes(X,Codes)}, Codes.
35
36
37f(adj).
38f(as).
39f(asup).
40f(b).
41f(bem).
42f(dcl).
43f(em).
44f(expl).
45f(for).
46f(frg).
47f(intj).
48f(inv).
49f(nb).
50f(ng).
51f(num).
52f(poss).
53f(pss).
54f(pt).
55f(q).
56f(qem).
57f(tpc).
58f(thr).
59f(to).
60f(wq)