2:- module(punctuation,[semlex_punct/4]). 3
4:- use_module(boxer(slashes)). 5:- use_module(boxer(categories),[category/3]). 6:- use_module(library(lists),[member/2]). 7:- use_module(semlib(options),[option/2]). 8
9
13
14punctuation('.').
15punctuation(',').
16punctuation(':').
17punctuation(';').
18punctuation('LQU').
19punctuation('RQU').
20punctuation('LRB').
21punctuation('RRB').
22punctuation('LSB').
23punctuation('RSB').
24punctuation('LCB').
25punctuation('RCB').
26
27
28/* --------------------------------------------------------------
29 Punctuation
30-------------------------------------------------------------- */
31
32semlex_punct(t:_\s:_,_,_,Sem):- !,
33 Sem = lam(S,app(S,lam(_,drs([],[])))).
34
35/* --------------------------------------------------------------
36 Punctuation (tuples)
37
38semlex_punct(Cat,POS,Index,Sem):-
39 option('--semantics',tuple),
40 punctuation(POS),
41 member(Cat,[s:X\s:X,s:X/s:X,np\np,np/np]), !,
42 Sem = lam(S,lam(F,app(S,lam(E,merge(drs([],[Index:pred(E,punctuation,a,42)]),app(F,E)))))).
43
44semlex_punct(Cat,POS,Index,Sem):-
45 option('--semantics',tuple),
46 punctuation(POS),
47 member(Cat,[n:X/n:X,n:X\n:X,pp/pp,pp\pp]), !,
48 Sem = lam(P,lam(Y,merge(drs([],[Index:pred(Y,punctuation,a,42)]),app(P,Y)))).
49
50semlex_punct(Cat,POS,Index,Sem):-
51 option('--semantics',tuple),
52 punctuation(POS),
53 category(vpadv,Cat,_), !,
54 Sem = lam(X,lam(Q,lam(F,app(app(X,Q),lam(E,merge(drs([],[Index:pred(E,punctuation,a,42)]),app(F,E))))))).
55
56semlex_punct(Cat,POS,Index,Sem):-
57 option('--semantics',tuple),
58 punctuation(POS),
59 member(Cat,[np\np, np/np]), !,
60 Sem = lam(Q,lam(P,app(Q,lam(X,merge(drs([],[Index:pred(X,punctuation,a,42)]),
61 app(P,X)))))).
62
63semlex_punct(Cat,POS,Index,Sem):-
64 option('--semantics',tuple),
65 punctuation(POS),
66 member(Cat,[((s:X\np)/(s:X\np))/((s:X\np)/(s:X\np)),
67 ((s:X\np)/(s:X\np))\((s:X\np)/(s:X\np)),
68 ((s:X\np)\(s:X\np))\((s:X\np)\(s:X\np)),
69 ((s:X\np)\(s:X\np))/((s:X\np)\(s:X\np))]), !,
70 Sem = lam(AV,lam(VP,lam(NP,lam(F,app(app(app(AV,VP),NP),lam(E,merge(drs([],[Index:pred(E,punctuation,a,42)]),app(F,E)))))))).
71
72semlex_punct(Cat,POS,Index,Sem):-
73 option('--semantics',tuple),
74 punctuation(POS),
75 member(Cat,[(s:X/s:X)/(s:X/s:X),
76 (s:X/s:X)\(s:X/s:X),
77 (s:X\s:X)/(s:X\s:X),
78 (s:X\s:X)\(s:X\s:X)]), !,
79 Sem = lam(M,lam(S,lam(F,app(app(M,S),lam(E,merge(drs([],[Index:pred(E,punctuation,a,42)]),app(F,E))))))).
80
81semlex_punct(Cat,POS,Index,Sem):-
82 option('--semantics',tuple),
83 punctuation(POS),
84 member(Cat,[(np\np)/(np\np),
85 (np\np)\(np\np),
86 (np/np)/(np/np)]), !,
87 Sem = lam(M,lam(Q,lam(P,app(app(M,Q),lam(X,merge(drs([],[Index:pred(X,punctuation,a,42)]),
88 app(P,X))))))).
89-------------------------------------------------------------- */
90
91semlex_punct(Cat,POS,_Index,Sem):-
92 member(Cat,[(s:X/s:X)/(s:Y/s:Y),
93 (s:X/s:X)/(s:Y\s:Y),
94 (s:X/s:X)\(s:Y/s:Y),
95 (s:X/s:X)\(s:Y\s:Y),
96 (s:X\s:X)/(s:Y\s:Y),
97 (s:X\s:X)/(s:Y/s:Y),
98 (s:X\s:X)\(s:Y/s:Y),
99 (s:X\s:X)\(s:Y\s:Y)]),
100 punctuation(POS), !,
101 Sem = lam(P,P).
102
103semlex_punct(C\C,POS,_Index,Sem):-
104 punctuation(POS), !,
105 Sem = lam(X,X).
106
107semlex_punct(C/C,POS,_Index,Sem):-
108 punctuation(POS), !,
109 Sem = lam(X,X)