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)