## Natural Language Toolkit: event.fcfg ## ## Illustrating Davidson-style event semantics ## ## Author: Ewan Klein ## URL: ## For license information, see LICENSE.TXT % start S ############################ # Grammar Rules ############################# S[sem = ] -> NP[num=?n,sem=?subj] VP[num=?n,sem=?vp] NP[num=?n,sem= ] -> Det[num=?n,sem=?det] Nom[num=?n,sem=?nom] NP[loc=?l,num=?n,sem=?np] -> PropN[loc=?l,num=?n,sem=?np] Nom[num=?n,sem=?nom] -> N[num=?n,sem=?nom] Nom[num=?n,sem=] -> N[num=?n,sem=?nom] PP[sem=?pp] VP[num=?n,sem=?v] -> IV[num=?n,sem=?v] VP[num=?n,sem=] -> TV[num=?n,sem=?v] NP[sem=?obj] VP[num=?n,sem=] -> DTV[num=?n,sem=?v] NP[sem=?obj] PP[+to, sem=?pp] VP[num=?n,sem=] -> VP[num=?n,sem=?vp] PP[sem=?pp] VP[num=?n,sem=] -> VP[num=?n,sem=?vp] Adv[sem=?adv] PP[sem=] -> P[loc=?l,sem=?p] NP[loc=?l,sem=?np] ############################# # Lexical Rules ############################# PropN[-loc,num=sg,sem=<\e R.R(e,angus)>] -> 'Angus' PropN[-loc,num=sg,sem=<\e R.R(e,pat)>] -> 'Pat' PropN[-loc,num=sg,sem=<\e R.R(e,irene)>] -> 'Irene' PropN[-loc,num=sg,sem=<\e R.R(e,cyril)>] -> 'Cyril' PropN[+loc, num=sg,sem=<\e R.R(e,stockbridge)>] -> 'Stockbridge' NP[-loc, num=sg, sem=<\P.\x.P(x)>] -> 'who' Det[num=sg,sem=<\P R e.all x.(P(x) -> R(e,x))>] -> 'every' Det[num=pl,sem=<\P R e.all x.(P(x) -> R(e,x))>] -> 'all' Det[sem=<\P R e.exists x.(P(x) & R(e,x))>] -> 'some' Det[num=sg,sem=<\P R e.exists x.(P(x) & R(e,x))>] -> 'a' N[num=sg,sem=] -> 'boy' N[num=pl,sem=] -> 'boys' N[num=sg,sem=] -> 'girl' N[num=pl,sem=] -> 'girls' N[num=sg,sem=] -> 'bone' N[num=sg,sem=] -> 'dog' IV[num=sg,sem=<\e x.(bark(e) & agent(e,x))>,tns=pres] -> 'barks' IV[num=pl,sem=<\e x.(bark(e) & agent(e,x))>,tns=pres] -> 'bark' IV[num=sg,sem=<\e x.(walk(e) & agent(e,x))>,tns=pres] -> 'walks' IV[num=pl,sem=<\e x.( walk(e) & agent(e,x))>,tns=pres] -> 'walk' TV[num=sg,sem=<\X y.X(\e x.(chase(e) & agent(e,y) & patient(e,x)))>,tns=pres] -> 'chases' TV[num=pl,sem=<\X y.X(\e x.(chase(e) & agent(e,y) & patient(e,x)))>,tns=pres] -> 'chase' TV[num=sg,sem=<\X y.X(\e x.(see(e) & agent(e,y) & patient(e,x)))>,tns=pres] -> 'sees' TV[num=pl,sem=<\X y.X(\e x.(see(e) & agent(e,y) & patient(e,x)))>,tns=pres] -> 'see' DTV[num=sg,sem=<\Y X x.X(\z.Y(\e y.(give(e) & agent(e,x) & theme(e,y) & recip(e,z))))>,tns=pres] -> 'gives' DTV[num=pl,sem=<\Y X x.X(\z.Y(\e y.(give(e) & agent(e,x) & theme(e,y) & recip(e,z))))>,tns=pres] -> 'give' P[+loc,sem=<\X P e.X(\y.(P(e) & in(e,y)))>] -> 'in' P[-loc,sem=<\X P e.X(\y.(P(e) & with(e,y)))>] -> 'with' P[+to,sem=<\X.X>] -> 'to' Adv[sem=<\R e x.(slow(e) & R(e,x))>] -> 'slowly' Adv[sem=<\R e x.(thoughtful(e) & R(e,x))>] -> 'thoughtfully'