;============================================================================================ ;ENG-UNL TRANSFORMATION GRAMMAR (FOR THE CORPUS UC-A1) ;Documentation available at http://www.unlweb.net/wiki/English_grammar ;============================================================================================ (%x,MERGE>)(%y):=(%x&%y,-MERGE>); (%x)(%y, bigger.@more (J,SUP):=(-SUP,+att=@most); biggest > biggest.@most ([more],%x)(J,%y):=(%y,+att=@more); more expensive > expensive.@more ([most],%x)(J,%y):=(%y,+att=@most); most expensive > expensive.@most ([less],%x)(J,%y):=(%y,+att=@less); less expensive > expensive.@less ([least],%x)(J,%y):=(%y,+att=@least); least expensive > expensive.@least ;============================================================================================ ;1.3 VERBS ;============================================================================================ ;Tense and aspect ({@present|@past|@future},^TNS):=(+TNS); (AUX,%x)(V,GER,%y):=(+att=@progressive,+att=%x,%y); is/was/be/been killing ({[will]|['ll]|[won't]},%x)([have])(V,PTP,%y):=(+att=@anterior,+att=%x,%y); will have killed ({[would]|['d]},%x)([have])(V,PTP,%y):=(+att=@past,+att=@posterior,+att=%x,%y); would have killed ({[have]|[has]|['ve]|[had]|['d]},%x)(V,PTP,%y)({^V,^BLK|SHEAD|STAIL},%z):=(+att=%x,%y)(%z); have killed ({[will]|['ll]|[won't]},%x)(V,%y)({^V,^BLK|SHEAD|STAIL},%z):=(+att=%x,%y)(%z); will kill ({[would]|['d]},%x)(V,%y)({^V,^BLK|SHEAD|STAIL},%z):=(+att=%x,%y)(%z); would kill ([used])([to])(V,INF,%y):=(+att=@habitual,%y); used to kill ([going])(BLK)([to])(BLK)(V,%y):=(+att=@recent,%y); is going to kill ([just])(V,%x):=(+att=@recent,%x); just killed ([still])(V,%x):=(+att=@continuative,%x); still killing ([already])(V,%x):=(+att=@perfective,%x); already killed (V,%x)([already]):=(+att=@perfective,%x); killed already ([did],%x)(V,INF,%y):=(-ATE,+ATE=PAS,+att=%x,%y); did kill ({[do]|[does]})(V,%x):=(-ATE,+ATE=PRS,+att=@present,%x); does kill (^AUX,^BLK,^[not],^[n't])(V,{^AUX|COP},PRS,^TNS):=()(+att=@present,+TNS); kill (^AUX,^BLK,^[not],^[n't])(V,{^AUX|COP},PAS,^TNS):=()(+att=@past,+TNS); killed ({^AUX,^BLK,^[not]|SHEAD|CHEAD},%x)([to])(V,%y):=(%x)(-ATE,+ATE=INF,%y); to kill ;Modality (MOV,%x)(V,%y):=(%y,+att=%x); can.@ability kill > kill.@ability ([ought],%x)([to])(V,%y):=(%y,+att=@probability); ({[have]|[has]|[had]},%x)([to])(V,%y):=(%y,+att=@obligation); ([able])(BLK)([to])(BLK)(V,%x):=(+att=@ability,%x); able to do ;Negation ([not])([to],%x)(V,%y):=(%x)(+att=@not,%y); ({[not]|[n't]})({V,^AUX|J|N|A|D},%x):=(+att=@not,%x); ;Reflexivity and reciprocity (VB,%x)(FPR):=(%x,+att=@reflexive); (VB,%x)(CPR):=(%x,+att=@reciprocal); ;============================================================================================ ;1.4 NUMBERS AND NUMERALS ;============================================================================================ ;Normalization ({SHEAD|CHEAD|^BLK,^DIGIT},%x)([a],%z)({"hundred"|"thousand"|"million"|"billion"|"trillion"},%y):=(%x)("1",[1],[[1]],U,CDN,DIGIT,%w)(%y); a thousand > 1 thousand ({SHEAD|CHEAD|^BLK,^DIGIT,^[a]},%x)({"hundred"|"thousand"|"million"|"billion"|"trillion"},%y):=(%x)("1",[1],[[1]],U,CDN,DIGIT,%z)(%y); thousand > 1 thousand (DIGIT,%x)(HYPHEN)(DIGIT,%y):=(%x)(%y); twenty-one > twenty one (DIGIT,%x)([and])(DIGIT,%y):=(%x)(%y); hundred and one > hundred one (DIGIT,%x)(COMMA,%y)(DIGIT,%z):=(%x&%z); 1,234 > 1234 (DIGIT,%x)(PUT,PERCENTAGE,%y):=(%x&%y,-PUT); 1 % > 1% (DIGIT,%x)(FSLASH,%y)(DIGIT,%z):=(%x&%y&%z,-FSLASH,+FRACTION); 1 / 5 > 1/5 ([plus],%x)(DIGIT,%y):=([+],[[+]],PUT,PLUS)(%y); plus 7 > + 7 ([minus],%x)(DIGIT,%y):=([-],[[-]],PUT,HYPHEN)(%y); minus 7 > - 7 ({[+]|[-]},%x)(DIGIT,%y):=(%x&%y,-PUT,-PLUS,-HYPHEN); + 7 > +7 (DIGIT,%x)(PERIOD,%y)(DIGIT,%z,^DECIMAL):=(%x&%y&%z,-PUT,-PERIOD,+DECIMAL); 1 . 2 > 1.2 (DIGIT,%x)([point],%y)(DIGIT,%z):=(DIGIT,%x)(".",[[.]],PERIOD,%w)(DIGIT,%z); 1 point 5 > 1 . 5 ;Cardinals ;;Round numbers (fill in the missing zeros) (DIGIT,TRILLION,%x)({^DIGIT,^BLK,^PUT,^[and]|STAIL|CTAIL},%y):=(%x)([[0]],[0],"0",BILLION,DIGIT)(%y); (DIGIT,TRILLION,%x)(DIGIT,^BILLION,%y)({^DIGIT,^U,^BLK|STAIL|CTAIL},%z):=(%x)([[0]],[0],"0",BILLION,DIGIT)(%y)(%z); ({SHEAD|CHEAD|^BLK,^DIGIT},%x)(DIGIT,TRILLION,%y)(DIGIT,BILLION,^000,%z):=(%x)(%y)([[0]],[0],"0",0,DIGIT)(%z); (DIGIT,BILLION,%x)({^DIGIT,^BLK,^PUT,^[and]|STAIL|CTAIL},%y):=(%x)([[0]],[0],"0",MILLION,DIGIT)(%y); (DIGIT,BILLION,%x)(DIGIT,^MILLION,%y)({^DIGIT,^U,^BLK|STAIL|CTAIL},%z):=(%x)([[0]],[0],"0",MILLION,DIGIT)(%y)(%z); ({SHEAD|CHEAD|^BLK,^DIGIT},%x)(DIGIT,BILLION,%y)(DIGIT,MILLION,^000,%z):=(%x)(%y)([[0]],[0],"0",0,DIGIT)(%z); (DIGIT,MILLION,%x)({^DIGIT,^BLK,^PUT,^[and]|STAIL|CTAIL},%y):=(%x)([[0]],[0],"0",THOUSAND,DIGIT)(%y); (DIGIT,MILLION,%x)(DIGIT,^THOUSAND,%y)({^DIGIT,^U,^BLK|STAIL|CTAIL},%z):=(%x)([[0]],[0],"0",THOUSAND,DIGIT)(%y)(%z); ({SHEAD|CHEAD|^BLK,^DIGIT},%x)(DIGIT,MILLION,%y)(DIGIT,THOUSAND,^000,%z):=(%x)(%y)([[0]],[0],"0",0,DIGIT)(%z); (DIGIT,THOUSAND,%x)({^DIGIT,^BLK,^PUT,^[and]|STAIL|CTAIL},%y):=(%x)([[0]],[0],"0",HUNDRED,DIGIT)(%y); (DIGIT,THOUSAND,%x)(DIGIT,^HUNDRED,%y)({^[hundred],^BLK|STAIL|CTAIL},%z):=(%x)([[0]],[0],"0",HUNDRED,DIGIT)(%y)(%z); ({SHEAD|CHEAD|^BLK},%z)(DIGIT,HUNDRED,%x)({^DIGIT,^BLK,^PUT,^[and]|DIGIT,^DOZEN,^00|STAIL|CTAIL},%y):=(%z)(%x)([[0]],[0],"0",DOZEN,DIGIT)(%y); ({SHEAD|CHEAD|^BLK},%z)(DIGIT,DOZEN,%x)({^DIGIT,^BLK,^PUT,^[and]|"thousand"|"million"|"billion"|"trillion"|STAIL|CTAIL},%y):=(%z)(%x)([[0]],[0],"0",DIGIT)(%y); ;;Non-round numbers (merge digits) ([0],0,%x)(DIGIT,^00,^000,%y):=(%x&%y,-0,+00); ([0],0,%x)(DIGIT,00,^000,%y):=(%x&%y,-0,-00,+000); ({SHEAD|CHEAD|^BLK,^DIGIT},%x)(DIGIT,TRILLION,%y)(DIGIT,BILLION,000,%z):=(%x)(%y&%z,-TRILLION); ({SHEAD|CHEAD|^BLK,^DIGIT},%x)(DIGIT,BILLION,%y)(DIGIT,MILLION,000,%z):=(%x)(%y&%z,-BILLION); ({SHEAD|CHEAD|^BLK,^DIGIT},%x)(DIGIT,MILLION,%y)(DIGIT,THOUSAND,000,%z):=(%x)(%y&%z,-MILLION); ({SHEAD|CHEAD|^BLK,^DIGIT},%z)(DIGIT,THOUSAND,%x)(DIGIT,HUNDRED,%y):=(%z)(%x&%y,-THOUSAND); ({SHEAD|CHEAD|^BLK},%z)(DIGIT,HUNDRED,%x)(DIGIT,00,%y):=(%z)(%x&%y,-HUNDRED,-00,+000); ({SHEAD|CHEAD|^BLK},%z)(DIGIT,DOZEN,%x)(DIGIT,^SECOND,%y):=(%z)(%x&%y,-DOZEN,+00); ;;Assigning values to digits (DIGIT,%x)("trillion"):=(%x,+TRILLION); (DIGIT,%x)("billion"):=(%x,+BILLION); (DIGIT,%x)("million"):=(%x,+MILLION); (DIGIT,%x)("thousand"):=(%x,+THOUSAND); (DIGIT,%x)("hundred"):=(%x,+HUNDRED); ;Ordinals ({DIGIT|CDN},%x)([st]):=(%x,ORD,att=@ordinal); ({DIGIT|CDN},%x)([nd]):=(%x,ORD,att=@ordinal); ({DIGIT|CDN},%x)([rd]):=(%x,ORD,att=@ordinal); ({DIGIT|CDN},%x)([th]):=(%x,ORD,att=@ordinal); (ORD,%x)([s]):=(%x); ;Fractions ([a],%a)(DIGIT,ORD,%x)([of],%y):=("1",[[1]],DIGIT,CDN,%b)(%x)(%y); a fifth > one fifth ([76zyh,k.ja])(BLK)([half]):=("1/2",[[1/2]],[1/2],U,DIGIT,PTN,W); a half > 1/2 half ([half],%x)(N,%y):=("1/2",[[1/2]],[1/2],U,DIGIT,PTN,W,%z)(%y); half book > 1/2 book (DIGIT,CDN,%x)({[half]|[halves]},%y):=(%x)("2",[2],[[2]],U,DIGIT,ORD,%z); one half > 1/2 (DIGIT,CDN,%x)({[quarter]|[quarters]},%y):=(%x)("4",[4],[[4]],U,DIGIT,ORD,%z); one quarter / 1/4 (DIGIT,CDN,%x)(DIGIT,PTN,%y):=(%x)(" ",[ ],[[ ]],JOIN,%w)(%y); (DIGIT,CDN,%x)(JOIN,%y)(DIGIT,PTN,%z):=(%x&%y&%z,-CDN,-JOIN); ({^BLK|SHEAD|STAIL},%a)(DIGIT,CDN,%x)(DIGIT,ORD,%y):=(%a)(%x)("/",[[/]])(%y); (DIGIT,CDN,%x)("/",%z)(DIGIT,ORD,%y):=(%x&%z&%y,-CDN,-ORD,+PTN); (PTN,%x)([of]):=(%x); (PTN,@ordinal):=(-@ordinal); ;Others (DIGIT,%x)({[s]|['s]},I):=(%x,-DIGIT,-TEMP,+W,+LEX=N,att=@pl); (DIGIT,%x)("times"):=(%x,+@times,+LEX=A,+POS=AAV); two times > 2.@times (U,^DOZEN,^HUNDRED,^THOUSAND,^MILLION,^BILLION,^TRILLION,^ORD,^PTN,^HOUR,^MINUTE,^SECOND,%x)(U,^DOZEN,^HUNDRED,^THOUSAND,^MILLION,^BILLION,^TRILLION,^ORD,^PTN,%y)({^DIGIT,^BLK|STAIL|CTAIL},%z):=(%x&%y)(%z); (merge digits) ;============================================================================================ ;1.5 EXPRESSIONS OF TIME ;============================================================================================ ;Hours ;Temporary solution while the arithmetic module is not implemented inside IAN/EUGENE (expected for version 1.1) ([[0]],ADD12):=([12],[[12]],-ADD12); ([[1]],ADD12):=([13],[[13]],-ADD12); ([[2]],ADD12):=([14],[[14]],-ADD12); ([[3]],ADD12):=([15],[[15]],-ADD12); ([[4]],ADD12):=([16],[[16]],-ADD12); ([[5]],ADD12):=([17],[[17]],-ADD12); ([[6]],ADD12):=([18],[[18]],-ADD12); ([[7]],ADD12):=([19],[[19]],-ADD12); ([[8]],ADD12):=([20],[[20]],-ADD12); ([[9]],ADD12):=([21],[[21]],-ADD12); ([[10]],ADD12):=([22],[[22]],-ADD12); ([[11]],ADD12):=([23],[[23]],-ADD12); ([[12]],ADD12):=([00],[[00]],-ADD12); ;Converting hours from words into the format HH:MM:SS ({"/\d/"|[[/\d/]]},^DOZEN,{SECOND|MINUTE|HOUR},%x)({^BLK|STAIL|CTAIL},%y):=([0],[[0]],MERGE>)(%x)(%y); (DIGIT,%x,^TIME)(":",%a)(DIGIT,%y,^TIME)(":",%b)(DIGIT,%z,^TIME)({^PM|^BLK|STAIL|CTAIL},%w):=(%x&%a&%y&%b&%z,+TIME,-HOUR,-MINUTE,-SECOND)(%w); (DIGIT,%x,^TIME)(":",%a)(DIGIT,%y,^TIME)(":",%b)(DIGIT,%z,^TIME)(PM,%w):=(%x,+ADD12)(%a)(%y)(%b)(%z); (DIGIT,%x,^TIME)(":",%a)(DIGIT,%y,^TIME)({STAIL|CTAIL|^":"},%z):=(%x)(%a)(%y)(":")([[00]],+DIGIT)(%z); (DIGIT,%x)(BLK)({"s"|"sec"|"secs"|"second"|"seconds"}):=(%x,+SECOND); (DIGIT,%x)(BLK)({"m"|"min"|"minute"|"minutes"}):=(%x,+MINUTE); (DIGIT,%x)(BLK)({"h"|"hr"|"hour"|"hours"|"o'clock"}):=(%x,+HOUR); ({SHEAD|CHEAD|^MINUTE,^DIGIT,^BLK,^":",^[and]},%x)(SECOND,%y):=(%x)([[00]],+DIGIT,+MINUTE)(%y); ({SHEAD|CHEAD|^HOUR,^DIGIT,^BLK,^":",^[and]},%x)(MINUTE,%y):=(%x)([[00]],+DIGIT,+HOUR)(%y); (MINUTE,%x)({STAIL|CTAIL|^SECOND,^DIGIT,^BLK,^":",^[and]},%y):=(%x)([[00]],+DIGIT,+SECOND,%z)(%y); (HOUR,%x)({STAIL|CTAIL|^MINUTE,^DIGIT,^BLK,^":",^[and]},%y):=(%x)([[00]],+DIGIT,+MINUTE,%z)(%y); (HOUR,%x)(MINUTE,%y)(SECOND,%z):=(%x)(":")(%y)(":")(%z); (HOUR,%x)(":",%a)(MINUTE,%y)(":",%b)(SECOND,%z):=(%x&%a&%y&%b&%z,+TIME,-HOUR,-MINUTE,-SECOND); ;Special cases ({[half]|[1/2]},%x)([past])(DIGIT,%y):=(%y,+HOUR)([[30]],+DIGIT,+MINUTE); half past ten ({[half]|[1/2]})([an])([hour]):=([[30]],+DIGIT,+MINUTE); half an hour ([a])(BLK)([quarter])(BLK)([past])(BLK)(DIGIT,%y):=(%y,+HOUR)([[15]],+DIGIT,+MINUTE); a quarter past ten ([a])(BLK)([quarter])(BLK)([to])(BLK)(DIGIT,%y):=(%y,+HOUR,+REDUCE1)([[45]],+DIGIT,+MINUTE); (DIGIT,%x)([past])(DIGIT,%y):=(%y,+HOUR)(%x,+MINUTE); (DIGIT,%x)([to])(DIGIT,%y):=(%y,+HOUR)(%x,+MINUTE); (TIME,%x)(AM):=(%x); AM is not represented (TIME,%x)(PM):=(%x); AM is not represented (TIME,^"/\d\d\:\d\d\:\d\d/"):=(-TIME,+TEMP); ({^BLK|^DIGIT|^":"|SHEAD|CHEAD},%x)(DIGIT,%y)(PM):=(%x)(%y,+ADD12,+HOUR); ({^BLK|^DIGIT|^":"|SHEAD|CHEAD},%x)(DIGIT,%y)(AM):=(%x)(%y,+HOUR); ;Dates (YEAR,%x)({BC|AD|CE},%y):=(%x&%y); (MONTH,%x){(COMMA)|("")}("/([01][0-9])?[0-9][0-9]/",^YEAR,%y):=(%x)(%y,+YEAR); (DIGIT,%x){({"st"|"nd"|"rd"|"th"})|("")}({"january"|"jan"}):=(%x,+DAY)([[1]],+DIGIT,+MONTH); (DIGIT,%x){({"st"|"nd"|"rd"|"th"})|("")}({"february"|"feb"}):=(%x,+DAY)([[2]],+DIGIT,+MONTH); (DIGIT,%x){({"st"|"nd"|"rd"|"th"})|("")}({"march"|"mar"}):=(%x,+DAY)([[3]],+DIGIT,+MONTH); (DIGIT,%x){({"st"|"nd"|"rd"|"th"})|("")}({"april"|"apr"}):=(%x,+DAY)([[4]],+DIGIT,+MONTH); (DIGIT,%x){({"st"|"nd"|"rd"|"th"})|("")}({"may"|"may"}):=(%x,+DAY)([[5]],+DIGIT,+MONTH); (DIGIT,%x){({"st"|"nd"|"rd"|"th"})|("")}({"june"|"jun"}):=(%x,+DAY)([[6]],+DIGIT,+MONTH); (DIGIT,%x){({"st"|"nd"|"rd"|"th"})|("")}({"july"|"jul"}):=(%x,+DAY)([[7]],+DIGIT,+MONTH); (DIGIT,%x){({"st"|"nd"|"rd"|"th"})|("")}({"august"|"aug"}):=(%x,+DAY)([[8]],+DIGIT,+MONTH); (DIGIT,%x){({"st"|"nd"|"rd"|"th"})|("")}({"september"|"sep"}):=(%x,+DAY)([[9]],+DIGIT,+MONTH); (DIGIT,%x){({"st"|"nd"|"rd"|"th"})|("")}({"october"|"oct"}):=(%x,+DAY)([[10]],+DIGIT,+MONTH); (DIGIT,%x){({"st"|"nd"|"rd"|"th"})|("")}({"november"|"nov"}):=(%x,+DAY)([[11]],+DIGIT,+MONTH); (DIGIT,%x){({"st"|"nd"|"rd"|"th"})|("")}({"december"|"dec"}):=(%x,+DAY)([[12]],+DIGIT,+MONTH); ({"january"|"jan"})(DIGIT,%x){({"st"|"nd"|"rd"|"th"})|("")}:=(%x,+DAY)([[1]],+DIGIT,+MONTH); ({"february"|"feb"})(DIGIT,%x){({"st"|"nd"|"rd"|"th"})|("")}:=(%x,+DAY)([[2]],+DIGIT,+MONTH); ({"march"|"mar"})(DIGIT,%x){({"st"|"nd"|"rd"|"th"})|("")}:=(%x,+DAY)([[3]],+DIGIT,+MONTH); ({"april"|"apr"})(DIGIT,%x){({"st"|"nd"|"rd"|"th"})|("")}:=(%x,+DAY)([[4]],+DIGIT,+MONTH); ({"may"|"may"})(DIGIT,%x){({"st"|"nd"|"rd"|"th"})|("")}:=(%x,+DAY)([[5]],+DIGIT,+MONTH); ({"june"|"jun"})(DIGIT,%x){({"st"|"nd"|"rd"|"th"})|("")}:=(%x,+DAY)([[6]],+DIGIT,+MONTH); ({"july"|"jul"})(DIGIT,%x){({"st"|"nd"|"rd"|"th"})|("")}:=(%x,+DAY)([[7]],+DIGIT,+MONTH); ({"august"|"aug"})(DIGIT,%x){({"st"|"nd"|"rd"|"th"})|("")}:=(%x,+DAY)([[8]],+DIGIT,+MONTH); ({"september"|"sep"})(DIGIT,%x){({"st"|"nd"|"rd"|"th"})|("")}:=(%x,+DAY)([[9]],+DIGIT,+MONTH); ({"october"|"oct"})(DIGIT,%x){({"st"|"nd"|"rd"|"th"})|("")}:=(%x,+DAY)([[10]],+DIGIT,+MONTH); ({"november"|"nov"})(DIGIT,%x){({"st"|"nd"|"rd"|"th"})|("")}:=(%x,+DAY)([[11]],+DIGIT,+MONTH); ({"december"|"dec"})(DIGIT,%x){({"st"|"nd"|"rd"|"th"})|("")}:=(%x,+DAY)([[12]],+DIGIT,+MONTH); (DAY,%x)(MONTH,%y)(YEAR,%z):=(%x)("/")(%y)("/")(%z); (DAY,%x)("/",%a)(MONTH,%y)("/",%b)(YEAR,%z):=(%x&%a&%y&%b&%z,+DATE,-DAY,-MONTH,-YEAR); (DAY,%x)(MONTH,%y)({STAIL|CTAIL|^DIGIT,^YEAR,^"/"}):=(%x)("/")(%y); (DAY,%x)("/",%a)(MONTH,%y):=(%x&%a&%y,+DATE,-DAY,-MONTH); ;============================================================================================ ;============================================================================================ ;2. ENGLISH SYNTAX ;============================================================================================ ;============================================================================================ ;============================================================================================ ;2.1 NP (Noun Phrase) ;============================================================================================ ;Determiners (D) (D,att,%x)(NB,%y):=(%y,+att=%x); the.@def book > book.@def (D,att,%x)(NP,%y):=(%y,+att=%x); the.@def book of John > book of John.@def (N,%x)(D,att,AFT,%y):=(%x,+att=%y); books enough.@enough > books.@enough (D,att,%x)([of])(NP,%y):=(%y,+att=%x); all.@all of them > them.@all ;Ordinals (ORD) (DIGIT,ORD,%y)(NB,%x):=(XB(%x;%y,+spec,+mod),+LEX=N,+XB=NB,%z); first book > XB(book,first) ;Quantifiers (DIGIT) (DIGIT,^ORD,%y)(NB,%x):=(XB(%x;%y,+spec,+qua),+LEX=N,+XB=NB,%z); two books > XB(books,two) ;Posessive determiners (POD) (POD,%x)(NB,%y):=(XP(%y;%x,+spec,+pos),+LEX=N,+XP=NP,%z); my book > XP(book,I) ;Possessive pronouns (SPR) (N,%x)([of])(SPR,%y):=(XB(%x;%y,+spec,+pos),+LEX=N,+XB=NB,%z); book of mine > XP(book,I) ;Genitive (GNT) (N,%x)(PTC,GNT)(N,%y):=(XB(%y;%x,+spec,+pos),+LEX=N,+XB=NB,%z); John's book > XB(book,John) ;Indefinite pronouns (NPR) (NPR,%x)([of])(NP,%y):=(XB(%y;%x,+spec,+qua),+LEX=N,+XB=NB,%z); none of them > XB(them, none) ;Interrogative determiners ([whose],%x)(N,%y):=(XB(%y;%x,+spec,+pos),+LEX=N,+XB=NB,%z); ;============================================================================================ ;2.2 JP (Adjective Phrase) ;============================================================================================ ;Intensifiers (SAV) (SAV,att,%x)({AB|JB|DB},%y):=(%y,+att=%x); very.@plus beautiful > beautiful.@plus ({AB|JB},%x)(SAV,att,AFT,%y):=(%x,+att=%y); beautiful enough.@enough > beautiful.@enough (SAV,^att,%x)({AB|JB|DB},%y):=(XB(%y;%x,+spec,+man),+LEX=%y,+XB=%y); extremely beautiful > XB(beautiful,extremely) ;============================================================================================ ;2.3 PP (Prepositional Phrase) ;============================================================================================ ([from])(%x,XP)([on]):=(%x,-LEX,-XP,+LEX=P,+XP=PP,+adjt,+rel=man,+att=@from_on); (P,^PP,%x)(XP,^DP,^PP,%y)({XP|PUT|STAIL|CTAIL},%z):=(%y,-LEX,-XP,+LEX=P,+XP=PP,+adjt,+rel=%x,+att=%x)(%z); ;============================================================================================ ;2.4 CP (Complementizer Phrase) ;=========================================================================================== ;Conjunctions ;Complementizers (%x,V)(CMR)(VP,%y):=(XB(%x;%y,+comp,+rel=obj); ;Adverbializers (AVR,%x)(XP,%y):=(%y,-LEX,-XP,+LEX=C,+XP=CP,+adjt,+att=%x,+rel=%x); ;Correlative ([both])(NP,%x)([and])(NP,%y):=(XB(%x;%y,+adjt,+att=@and,+rel=and),+LEX=N,+XP=NP,,%z); ([either])(NP,%x)([or])(NP,%y):=(XB(%x;%y,+adjt,+att=@or,+rel=or),+LEX=N,+XP=NP,,%z); ([neither])(NP,%x)([nor])(NP,%y):=(XB(%x;%y,+adjt,+att=@and,+rel=and),+LEX=N,+XP=NP,,%z); ([not only])(NP,%x)([but also])(P,%y):=(XB(%x;%y,+adjt,+att=@and,+rel=and),+LEX=N,+XP=NP,%z); ([whether])(NP,%x)([or])(NP,%y):=(XB(%x;%y,+adjt,+att=@or,+rel=or),+LEX=N,+XP=NP,%z); ;Coordination (NP,%x)(COMMA,%c)(NP,%y)({[and]|[nor]})(NP,%z):=(%x)([and],+W,%a)(and(%z;%y),+LEX=N,+XP=NP,%yz); (VP,%x)(COMMA,%c)(VP,%y)({[and]|[nor]})(VP,%z):=(%x)([and],+W,%a)(and(%z;%y),+LEX=V,+XP=VP,%yz); (AP,%x)(COMMA,%c)(AP,%y)({[and]|[nor]})(AP,%z):=(%x)([and],+W,%a)(and(%z;%y),+LEX=A,+XP=AP,%yz); (JP,%x)(COMMA,%c)(JP,%y)({[and]|[nor]})(JP,%z):=(%x)([and],+W,%a)(and(%z;%y),+LEX=J,+XP=JP,%yz); (PP,%x)(COMMA,%c)(PP,%y)({[and]|[nor]})(PP,%z):=(%x)([and],+W,%a)(and(%z;%y),+LEX=P,+XP=PP,%yz); (NP,%x)(COMMA,%c)(NP,%y)([or])(NP,%z):=(%x)([or],+W,%a)(or(%z;%y),+LEX=N,+XP=NP,%yz); (VP,%x)(COMMA,%c)(VP,%y)([or])(VP,%z):=(%x)([or],+W,%a)(or(%z;%y),+LEX=V,+XP=VP,%yz); (AP,%x)(COMMA,%c)(AP,%y)([or])(AP,%z):=(%x)([or],+W,%a)(or(%z;%y),+LEX=A,+XP=AP,%yz); (JP,%x)(COMMA,%c)(JP,%y)([or])(JP,%z):=(%x)([or],+W,%a)(or(%z;%y),+LEX=J,+XP=JP,%yz); (PP,%x)(COMMA,%c)(PP,%y)([or])(PP,%z):=(%x)([or],+W,%a)(or(%z;%y),+LEX=P,+XP=PP,%yz); (VP,%x)({[and]|[nor]|COMMA})(VP,%y):=(and(%y;%x),+LEX=V,+XP=VP,%xy); (NP,%x)({[and]|[nor]|COMMA})(NP,%y):=(and(%y;%x),+LEX=N,+XP=NP,%xy); (AP,%x)({[and]|[nor]|COMMA})(AP,%y):=(and(%y;%x),+LEX=A,+XP=AP,%xy); (JP,%x)({[and]|[nor]|COMMA})(JP,%y):=(and(%y;%x),+LEX=J,+XP=JP,%xy); (PP,%x)({[and]|[nor]|COMMA})(PP,%y):=(and(%y;%x),+LEX=P,+XP=PP,%xy); (VP,%x)([or])(VP,%y):=(or(%y;%x),+LEX=V,+XP=VP,%xy); (NP,%x)([or])(NP,%y):=(or(%y;%x),+LEX=N,+XP=NP,%xy); (AP,%x)([or])(AP,%y):=(or(%y;%x),+LEX=A,+XP=AP,%xy); (JP,%x)([or])(JP,%y):=(or(%y;%x),+LEX=J,+XP=JP,%xy); (PP,%x)([or])(PP,%y):=(or(%y;%x),+LEX=P,+XP=PP,%xy); ;============================================================================================ ;2.5 Other rules ;=========================================================================================== ;Punctuation (BLK):=; deletes the blank space (XP,%x)(QMARK):=(%x,att=@interrogative); (XP,%x)(EMARK):=(%x,att=@exclamative); ;============================================================================================ ;============================================================================================ ;3. DEFAULT GRAMMAR: NORMALIZATION ;============================================================================================ ;============================================================================================ ;============================================================================================ ;3.1. FEATURE NORMALIZATION ;Represent isolated features in the attribute-value format, which is easier for agreement ;============================================================================================ ;Aspect (CAU,^ASP):=(-CAU,+ASP=CAU); (PFV,^ASP):=(-PFV,+ASP=PFV); (NPFV,^ASP):=(-NPFV,+ASP=NPFV); (PFC,^ASP):=(-PFC,+ASP=PFC); (PPT,^ASP):=(-PPT,+ASP=PPT); (ICP,^ASP):=(-ICP,+ASP=ICP); (TER,^ASP):=(-TER,+ASP=TER); ;Case (ABE,^CAS):=(-ABE,+CAS=ABE); (ABL,^CAS):=(-ABL,+CAS=ABL); (ACC,^CAS):=(-ACC,+CAS=ACC); (ADE,^CAS):=(-ADE,+CAS=ADE); (ALL,^CAS):=(-ALL,+CAS=ALL); (ABS,^CAS):=(-ABS,+CAS=ABS); (BEN,^CAS):=(-BEN,+CAS=BEN); (CMT,^CAS):=(-CMT,+CAS=CMT); (DAT,^CAS):=(-DAT,+CAS=DAT); (DEL,^CAS):=(-DEL,+CAS=DEL); (ELA,^CAS):=(-ELA,+CAS=ELA); (EQU,^CAS):=(-EQU,+CAS=EQU); (ERG,^CAS):=(-ERG,+CAS=ERG); (ESS,^CAS):=(-ESS,+CAS=ESS); (GNT,^CAS):=(-GNT,+CAS=GNT); (HOR,^CAS):=(-HOR,+CAS=HOR); (ILL,^CAS):=(-ILL,+CAS=ILL); (INE,^CAS):=(-INE,+CAS=INE); (INS,^CAS):=(-INS,+CAS=INS); (LAT,^CAS):=(-LAT,+CAS=LAT); (LOC,^CAS):=(-LOC,+CAS=LOC); (NOM,^CAS):=(-NOM,+CAS=NOM); (OBL,^CAS):=(-OBL,+CAS=OBL); (PLT,^CAS):=(-PLT,+CAS=PLT); (PPL,^CAS):=(-PPL,+CAS=PPL); (PTT,^CAS):=(-PTT,+CAS=PTT); (SPE,^CAS):=(-SPE,+CAS=SPE); (TRM,^CAS):=(-TRM,+CAS=TRM); (TLT,^CAS):=(-TLT,+CAS=TLT); (VOC,^CAS):=(-VOC,+CAS=VOC); ;Gender (FEM,^GEN):=(-FEM,+GEN=FEM); (MCL,^GEN):=(-MCL,+GEN=MCL); (NEU,^GEN):=(-NEU,+GEN=NEU); ;Lex (J,^LEX):=(-J,+LEX=J); (P,^LEX):=(-P,+LEX=P); (A,^LEX):=(-A,+LEX=A); (I,^LEX):=(-I,+LEX=I); (C,^LEX):=(-C,+LEX=C); (D,^LEX):=(-D,+LEX=D); (N,^LEX):=(-N,+LEX=N); (U,^LEX):=(-U,+LEX=U); (R,^LEX):=(-R,+LEX=R); (V,^LEX):=(-V,+LEX=V); (O,^LEX):=(-O,+LEX=O); ;Mood (AUM,^MOO):=(-AUM,+MOO=AUM); (CAU,^MOO):=(-CAU,+MOO=CAU); (CON,^MOO):=(-CON,+MOO=CON); (DEC,^MOO):=(-DEC,+MOO=DEC); (DED,^MOO):=(-DED,+MOO=DED); (DLB,^MOO):=(-DLB,+MOO=DLB); (DUB,^MOO):=(-DUB,+MOO=DUB); (HYP,^MOO):=(-HYP,+MOO=HYP); (IMP,^MOO):=(-IMP,+MOO=IMP); (IPC,^MOO):=(-IPC,+MOO=IPC); (IND,^MOO):=(-IND,+MOO=IND); (INT,^MOO):=(-INT,+MOO=INT); (JUS,^MOO):=(-JUS,+MOO=JUS); (OBM,^MOO):=(-OBM,+MOO=OBM); (OPT,^MOO):=(-OPT,+MOO=OPT); (PMS,^MOO):=(-PMS,+MOO=PMS); (POT,^MOO):=(-POT,+MOO=POT); (PCT,^MOO):=(-PCT,+MOO=PCT); (PHB,^MOO):=(-PHB,+MOO=PHB); (SPT,^MOO):=(-SPT,+MOO=SPT); (SUB,^MOO):=(-SUB,+MOO=SUB); ;Number (SNG,^NUM):=(-SNG,+NUM=SNG); (PLR,^NUM):=(-PLR,+NUM=PLR); ;POS (ADJ,^POS):=(-ADJ,+POS=ADJ); (PTP,^POS):=(-PTP,+POS=PTP); (CIR,^POS):=(-CIR,+POS=CIR); (PPS,^POS):=(-PPS,+POS=PPS); (PRE,^POS):=(-PRE,+POS=PRE); ({CIR|PPS|PRE},^P):=(-LEX,+LEX=P); (SAV,^POS):=(-SAV,+POS=SAV); (AAV,^POS):=(-AAV,+POS=AAV); (CJT,^POS):=(-CJT,+POS=CJT); (DJT,^POS):=(-DJT,+POS=DJT); ({SAV|AAV|CJT|DJT},^A):=(-LEX,+LEX=A); (CCX,^POS):=(-CCX,+POS=CCX); (IFX,^POS):=(-IFX,+POS=IFX); (PFX,^POS):=(-PFX,+POS=PFX); (SFX,^POS):=(-SFX,+POS=SFX); ({CCX|IFX|PFX|SFX},^I):=(-LEX,+LEX=I); (CLA,^POS):=(-CLA,+POS=CLA); (COO,^POS):=(-COO,+POS=COO); (SCJ,^POS):=(-SCJ,+POS=SCJ); ({COO|SCJ},^C):=(-LEX,+LEX=C); (ART,^POS):=(-ART,+POS=ART); (DEM,^POS):=(-DEM,+POS=DEM); (POD,^POS):=(-POD,+POS=POD); (QUA,^POS):=(-QUA,+POS=QUA); ({ART|DEM|POD|QUA},^D):=(-LEX,+LEX=D); (ITJ,^POS):=(-ITJ,+POS=ITJ); (NOU,^POS):=(-NOU,+POS=NOU); (PPN,^POS):=(-PPN,+POS=PPN); ({NOU|PPN},^N):=(-LEX,+LEX=N); (CDN,^POS):=(-CDN,+POS=CDN); (DTN,^POS):=(-DTN,+POS=DTN); (PTN,^POS):=(-PTN,+POS=PTN); (MLN,^POS):=(-MLN,+POS=MLN); (ORD,^POS):=(-ORD,+POS=ORD); ({CDN|DTN|PTN|MLN|ORD},^U):=(-LEX,+LEX=U); (PTC,^POS):=(-PTC,+POS=PTC); (DEP,^POS):=(-DEP,+POS=DEP); (DUM,^POS):=(-DUM,+POS=DUM); (EPR,^POS):=(-EPR,+POS=EPR); (NPR,^POS):=(-NPR,+POS=NPR); (IPR,^POS):=(-IPR,+POS=IPR); (PPR,^POS):=(-PPR,+POS=PPR); (SPR,^POS):=(-SPR,+POS=SPR); (CPR,^POS):=(-CPR,+POS=CPR); (FPR,^POS):=(-FPR,+POS=FPR); (RPR,^POS):=(-RPR,+POS=RPR); ({DEP|DUM|EPR|NPR|IPR|PPR|SPR|CPR|FPR|RPR},^R):=(-LEX,+LEX=R); (VER,^POS):=(-VER,+POS=VER); (AUX,^POS):=(-AUX,+POS=AUX); (MOV,^POS):=(-MOV,+POS=MOV); (COP,^POS):=(-COP,+POS=COP); ({VER|AUX|MOV|COP},^V):=(-LEX,+LEX=V); ;Person (1PP,^PER):=(-1PP,+PER=1PP); (1PS,^PER):=(-1PS,+PER=1PS); (2PP,^PER):=(-2PP,+PER=2PP); (2PS,^PER):=(-2PS,+PER=2PS); (3PP,^PER):=(-3PP,+PER=3PP); (3PS,^PER):=(-3PS,+PER=3PS); ;POS (CRC,^COO):=(-POS,-CRC,+POS=CRC,+POS=COO); (AVR,^SCJ):=(-POS,-AVR,+POS=AVR,+POS=SCJ); (CMR,^SCJ):=(-POS,-CMR,+POS=CMR,+POS=SCJ); (RVZ,^SCJ):=(-POS,-RVZ,+POS=RVZ,+POS=SCJ); ;Syntactic Roles (NB,^XB):=(-NB,+XB=NB); (AB,^XB):=(-AB,+XB=AB); (JB,^XB):=(-JB,+XB=JB); (IB,^XB):=(-IB,+XB=IB); (CB,^XB):=(-CB,+XB=CB); (DB,^XB):=(-DB,+XB=DB); (VB,^XB):=(-VB,+XB=VB); (PB,^XB):=(-PB,+XB=PB); (NP,^XP):=(-NP,+XP=NP); (AP,^XP):=(-AP,+XP=AP); (JP,^XP):=(-JP,+XP=JP); (IP,^XP):=(-IP,+XP=IP); (CP,^XP):=(-CP,+XP=CP); (DP,^XP):=(-DP,+XP=DP); (VP,^XP):=(-VP,+XP=VP); (PP,^XP):=(-PP,+XP=PP); (XB,N,^NB):=(+XB=NB); (XB,A,^AB):=(+XB=AB); (XB,J,^JB):=(+XB=JB); (XB,I,^IB):=(+XB=IB); (XB,C,^CB):=(+XB=CB); (XB,D,^DB):=(+XB=DB); (XB,V,^VB):=(+XB=VB); (XB,P,^PB):=(+XB=PB); ;Tense (PRS,^ATE):=(-PRS,+ATE=PRS); (PAS,^ATE):=(-PAS,+ATE=PAS); (FUT,^ATE):=(-FUT,+ATE=FUT); (NPAS,^ATE):=(-NPAS,+ATE=NPAS); (NFUT,^ATE):=(-NFUT,+ATE=NFUT); (STL,^ATE):=(-STL,+ATE=STL); (NYET,^ATE):=(-NYET,+ATE=NYET); (RPT,^RTE):=(-RPT,+RTE=RPT); (NRPT,^RTE):=(-NRPT,+RTE=NRPT); (RPS,^RTE):=(-RPS,+RTE=RPS); (RFT,^RTE):=(-RFT,+RTE=RFT); (NRFT,^RTE):=(-NRFT,+RTE=NRFT); ;Transitivity (NTRA,^TRA):=(-NTRA,+TRA=NTRA); (TST,^TRA):=(-TST,+TRA=TST); (NTST,^TRA):=(-NTST,+TRA=NTST); ;Voice (ACV,^VOI):=(-ACV,+VOI=ACV); (MIV,^VOI):=(-MIV,+VOI=MIV); (PSV,^VOI):=(-PSV,+VOI=PSV); ;============================================================================================ ;3.2 FEATURE PROPAGATION ;Propagate the values of the top categories to the others that they subsume. ;============================================================================================ ;Aspect (CTN,^NPFV):=(-ASP,-CTN,+ASP=CTN,+ASP=NPFV); (PGS,^CTN,^NPFV):=(-ASP,-PGS,+ASP=PGS,+ASP=CTN,+ASP=NPFV); (HAB,^NPFV):=(-ASP,-HAB,+ASP=HAB,+ASP=NPFV); (ITE,^NPFV):=(-ASP,-ITE,+ASP=ITE,+ASP=NPFV); (EXP,^PFC):=(-ASP,-EXP,+ASP=EXP,+ASP=PFC); (PSS,^PFC):=(-ASP,-PSS,+ASP=PSS,+ASP=PFC); (PRP,^PFC):=(-ASP,-PRP,+ASP=PRP,+ASP=PFC); (RES,^PFC):=(-ASP,-RES,+ASP=RES,+ASP=PFC); ;Gender (COM,^MCL,^FEM):=(-GEN,-COM,+GEN=COM,+GEN=MCL,+GEN=FEM); (VAR,^MCL,^FEM,^NEU):=(-GEN,-VAR,+GEN=VAR,GEN=MCL,+GEN=FEM,+GEN=NEU); ;Number (SNGT,^SNG):=(-NUM,-SGNT,+NUM=SNG,+NUM=SNGT); SNGT is also SNG (PLRT,^PLR):=(-NUM,-PLRT,+NUM=PLR,+NUM=PLRT); PLRT is also PLR (INV,^SNG,^PLR):=(-NUM,-INV,+NUM=SNG,+NUM=PLR,+NUM=INV); INV is both SNG and PLR (DUA,^PLR):=(-NUM,-DUA,+NUM=DUA,+NUM=PLR); (TRI,^PLR):=(-NUM,-TRI,+NUM=PLR,+NUM=TRI); (QDR,^PLR):=(-NUM,-QDR,+NUM=PLR,+NUM=QDR); (PAU,^PLR):=(-NUM,-PAU,+NUM=PLR,+NUM=PAU); (MUL,^PLR):=(-NUM,-MUL,+NUM=PLR,+NUM=MUL); ;Person (N,PLR,^3PP):=(-PER,+PER=3PP); plural nouns are 3PP (N,SNG,^3PS):=(-PER,+PER=3PS); singular nouns are 3PS ;Tense (PTR,^PAS):=(-ATE,-PTR,+ATE=PTR,+ATE=PAS); (HEP,^PAS):=(-ATE,-HEP,+ATE=HEP,+ATE=PAS); (PEP,^PAS):=(-ATE,-PEP,+ATE=PEP,+ATE=PAS); (HOP,^PAS):=(-ATE,-HOP,+ATE=HOP,+ATE=PAS); (POP,^PAS):=(-ATE,-POP,+ATE=POP,+ATE=PAS); (IPT,^PAS):=(-ATE,-IPT,+ATE=IPT,+ATE=PAS); (NRCP,^PAS):=(-ATE,-NRCP,+ATE=NRCP,+ATE=PAS); (RCP,^PAS):=(-ATE,-RCP,+ATE=RCP,+ATE=PAS); (NRMP,^PAS):=(-ATE,-NRMP,+ATE=NRMP,+ATE=PAS); (RMP,^PAS):=(-ATE,-RMP,+ATE=RMP,+ATE=PAS); (FUN,^FUT):=(-ATE,-FUN,+ATE=FUN,+ATE=FUT); (FUR,^FUT):=(-ATE,-FUR,+ATE=FUR,+ATE=FUT); ;Transitivity (TSTD,^TST):=(-TRA,-TSTD,+TRA=TSTD,+TRA=TST); (TSTI,^TST):=(-TRA,-TSTI,+TRA=TSTI,+TRA=TST); (TST2,^TST):=(-TRA,-TST2,+TRA=TST2,+TRA=TST); (TST3,^TST):=(-TRA,-TST3,+TRA=TST3,+TRA=TST); (NERG,^NTST):=(-TRA,-NERG,+TRA=NERG,+TRA=NTST); (NACC,^NTST):=(-TRA,-NACC,+TRA=NACC,+TRA=NTST); ;Syntactic roles (XB(%x;%y),^XB,^XP):=(+XB); assigns the feature XB to the nodes containing intermediate projections (XP(%x;%y),^XP):=(+XP); assigns the feature XP to the nodes containing maximal projections (/X[BP]/(%x,N;%y),^N):=(+LEX=N); (/X[BP]/(%x,A;%y),^A):=(+LEX=A); (/X[BP]/(%x,J;%y),^J):=(+LEX=J); (/X[BP]/(%x,I;%y),^I):=(+LEX=I); (/X[BP]/(%x,C;%y),^C):=(+LEX=C); (/X[BP]/(%x,D;%y),^D):=(+LEX=D); (/X[BP]/(%x,V;%y),^V):=(+LEX=V); (/X[BP]/(%x,P;%y),^P):=(+LEX=P); ;============================================================================================ ;3.3 Other normalization and propagation rules ;============================================================================================ ;Temporary words (UW,TEMP):=(-TEMP); removes the feature TEMP from the words with the feature UW (TEMP,%x)(BLK,%y)(TEMP,%z):=(%x&%y&%z,-BLK); merges temporary words (TEMP,^LEX):=(+LEX=N,+POS=PPN); treats all temporary words as proper nouns ;Proper Names (PPN,%a)(BLK,%b)(PPN,%c):=(%a&%b&%c,+TEMP,-BLK); merges sequences of proper names ;Assigning W (this is necessary to allow blank spaces to be deleted before and after temporary words after the tokenization) (^W,^SBW,^BLK,^SHEAD,^STAIL,^CHEAD,^CTAIL):=(+W); assigns the feature W to simple words and multiword expressions, even if temporary ;Other propagation rules (R,^N):=(+LEX=N); assigns the feature N to pronouns (PTN,^N):=(+LEX=N); assigns the feature N to partitive numbers ({CDN|ORD},^J):=(+J); assigns the feature J to cardinals and ordinals ({DTN|MLN},^A):=(+A); assigns the feature A to distributive ("in pairs") and multiplicative ("twice") numbers ;============================================================================================ ;============================================================================================ ;4. DEFAULT GRAMMAR: PARSING ;============================================================================================ ;============================================================================================ ;Maximal Projection (XP) ({^A|SHEAD|CHEAD})(DB,^head,^DP,^XP):=()(+XP=DP,-XB); ({^A|SHEAD|CHEAD})(AB,^head,^AP,^XP):=()(+XP=AP,-XB); ({^A|SHEAD|CHEAD})(JB,^head,^JP,^XP)({^P|STAIL|CTAIL}):=()(+XP=JP,-XB)(); ({V|P})(NB,^head,^NP,^XP)({PP|PUT|STAIL|CTAIL}):=()(+XP=NP,-XB)(); ({^D,^J,^PPN,^BLK|SHEAD|CHEAD})(NB,PPN,^head,^NP,^XP)({^D,^J,^PPN,^BLK|PUT|STAIL|CTAIL}):=()(+XP=NP,-XB)(); ({^D,^J,^N,^BLK|SHEAD|CHEAD})(NB,^head,^NP,^XP)({^D,^J,^P,^PP,^RPR|PUT|STAIL|CTAIL}):=()(+XP=NP,-XB)(); ({^A,^N|SHEAD|CHEAD})(VB,^head,^VP,^XP)({^A,^J,^N,^P|STAIL|CTAIL}):=()(+XP=VP,-XB)(); ({^A|SHEAD|CHEAD})(IB,^head,^IP,^XP)({^V|STAIL|CTAIL}):=()(+XP=IP,-XB)(); ({^A|SHEAD|CHEAD})(CB,^head,^CP,^XP)({^I,^V|STAIL|CTAIL}):=()(+XP=CP,-XB)();# ({^A|SHEAD|CHEAD})(PB,^head,^PP,^XP)({STAIL|CTAIL|PUT}):=()(+XP=PP,-XB)(); ;First projection (heads) (D,^head,^XB,^XP):=(+XB=DB); (A,^head,^XB,^XP):=(+XB=AB); (J,^head,^XB,^XP):=(+XB=JB); (N,^head,^XB,^XP):=(+XB=NB); (V,^head,^XB,^XP):=(+XB=VB); (I,^head,^XB,^XP):=(+XB=IB); (C,^head,^XB,^XP):=(+XB=CB); (P,^head,^XB,^XP):=(+XB=PB); ;Second projection (complements) (VB,^ITST,%x)({NP|PP|JP},%y)({XP|STAIL|CTAIL},%z):=(XB(%x,+head;%y,+comp),+XB=VB,+LEX=V,+POS=%x,%xy)(%z); (PB,%x)({NP|VP|JP},%y)({XP|STAIL|CTAIL},%z):=(XB(%x,+head;%y,+comp),+XB=PB,+LEX=P,%xy)(%z); ({^V|^P|SHEAD|CHEAD},%w)(NB,%x)(PP,%y)({XP|CB|STAIL|CTAIL},%z):=(%w)(XB(%x,+head;%y,+comp),+XB=NB,+LEX=N,%xy)(%z); (JB,%x)(PP,%y)({XP|STAIL|CTAIL},%z):=(XB(%x,+head;%y,+comp),+XB=JB,+LEX=J,%xy)(%z); (AB,%x)(PP,%y)({XP|STAIL|CTAIL},%z):=(XB(%x,+head;%y,+comp),+XB=AB,+LEX=A,%xy)(%z); (IB,%x)(VP,%y)({XP|STAIL|CTAIL},%z):=(XB(%x,+head;%y,+comp),+XB=IB,+LEX=I,%xy)(%z); (CB,%x)(IP,%y)({XP|STAIL|CTAIL},%z):=(XB(%x,+head;%y,+comp),+XB=CB,+LEX=C,%xy)(%z); ;Third projection (adjuncts) (N,%y)(NB,%x)({XP|STAIL|CTAIL},%z):=(XB(%x,+att=%y;%y,-att,+adjt),+XB=NB,+LEX=N,%xy)(%z); (VB,ITST,%x)(NP,%y)({XP|STAIL|CTAIL},%z):=(XB(%x;%y,+adjt),+XB=VB,+LEX=V,+POS=%x,%xy)(%z); (VB,%x)({PP|JP|AP},%y)({XP|STAIL|CTAIL},%z):=(XB(%x;%y,+adjt),+XB=VB,+LEX=V,+POS=%x,%xy)(%z); (NB,%x)({JP|PP},%y)({XP|STAIL|CTAIL},%z):=(XB(%x;%y,+adjt),+XB=NB,+LEX=N,%xy)(%z); (JB,%x)({AP|PP},%y)({XP|STAIL|CTAIL},%z):=(XB(%x;%y,+adjt),+XB=JB,+LEX=J,%xy)(%z); (JP,%y)(NB,%x)({XP|CB|VB|PUT|STAIL|CTAIL},%z):=(XB(%x;%y,+adjt),+XB=NB,+LEX=N,%xy)(%z); (AP,%y)(VB,%x)({XP|STAIL|CTAIL},%z):=(XB(%x;%y,+adjt),+XB=VB,+LEX=V,+POS=%x,%xy)(%z); (IB,%x)(AP,%y)({XP|STAIL|CTAIL},%z):=(XB(%x;%y,+adjt),+XB=IB,+LEX=I,%xy)(%z); (CB,%x)(AP,%y)({XP|STAIL|CTAIL},%z):=(XB(%x;%y,+adjt),+XB=CB,+LEX=C,%xy)(%z); (XP,%x)(CP,%y):=(XB(%x;%y,+adjt),+LEX=%x); ;Fourth projection (specifiers) (AP,%y)(AB,%x)({XP|STAIL|CTAIL},%z):=(XP(%x;%y,+spec),+XP=AP,+LEX=A,%xy)(%z); (AP,%y)(JB,%x)({XP|STAIL|CTAIL},%z):=(XP(%x;%y,+spec),+XP=JP,+LEX=J,%xy)(%z); (DP,%y)(NB,%x)({XP|STAIL|CTAIL},%z):=(XP(%x;%y,+spec),+XP=NP,+LEX=N,%xy)(%z); (NP,%y)(VB,%x)({^A,^J,^N,^P|STAIL|CTAIL},%z):=(XP(%x;%y,+spec),+XP=VP,+LEX=V,%xy)(%z); (AP,%y)(PB,%x)({^A,^J,^N,^V|STAIL|CTAIL},%z):=(XP(%x;%y,+spec),+XP=PP,+LEX=P,%xy)(%z); (AP,%y)(IB,%x)({^V|STAIL|CTAIL},%z):=(XP(%x;%y,+spec),+XP=IP,+LEX=I,%xy)(%z); (AP,%y)(CB,%x)({^I,^V|STAIL|CTAIL},%z):=(XP(%x;%y,+spec),+XP=CP,+LEX=C,%xy)(%z); ;============================================================================================ ;============================================================================================ ;5. DEFAULT GRAMMAR: DEARBORIZATION ;============================================================================================ ;============================================================================================ ;Copying the features of the outer nodes to the inner nodes (XB(%x;%y),%w,att):=(XB(%x,+att=%w;%y),%w,-att); (XP(%x;%y),%w,att):=(XP(%x,+att=%w;%y),%w,-att); ;Converting trees into head-driven phrase structures XB(XB(%x;%y);%z):=XB(%x;%y)XB(%x;%z); XP(XB(%x;%y);%z):=XB(%x;%y)XS(%x;%z); XP(%x;%y):=XS(%x;%y); ;Propagating the categories of the heads to the relations (/X[BS]/(%x;%y,adjt),N,%z):=(NA(%x;%y),%z); (/X[BS]/(%x;%y,adjt),J,%z):=(JA(%x;%y),%z); (/X[BS]/(%x;%y,adjt),A,%z):=(AA(%x;%y),%z); (/X[BS]/(%x;%y,adjt),V,%z):=(VA(%x;%y),%z); (/X[BS]/(%x;%y,adjt),P,%z):=(PA(%x;%y),%z); (/X[BS]/(%x;%y,adjt),D,%z):=(DA(%x;%y),%z); (/X[BS]/(%x;%y,adjt),I,%z):=(IA(%x;%y),%z); (/X[BS]/(%x;%y,adjt),C,%z):=(CA(%x;%y),%z); (/X[BS]/(%x;%y,comp),N,%z):=(NC(%x;%y),%z); (/X[BS]/(%x;%y,comp),J,%z):=(JC(%x;%y),%z); (/X[BS]/(%x;%y,comp),A,%z):=(AC(%x;%y),%z); (/X[BS]/(%x;%y,comp),V,%z):=(VC(%x;%y),%z); (/X[BS]/(%x;%y,comp),P,%z):=(PC(%x;%y),%z); (/X[BS]/(%x;%y,comp),D,%z):=(DC(%x;%y),%z); (/X[BS]/(%x;%y,comp),I,%z):=(IC(%x;%y),%z); (/X[BS]/(%x;%y,comp),C,%z):=(CC(%x;%y),%z); (/X[BS]/(%x;%y,spec),N,%z):=(NS(%x;%y),%z); (/X[BS]/(%x;%y,spec),N,%z):=(NS(%x;%y),%z); (/X[BS]/(%x;%y,spec),J,%z):=(JS(%x;%y),%z); (/X[BS]/(%x;%y,spec),A,%z):=(AS(%x;%y),%z); (/X[BS]/(%x;%y,spec),V,%z):=(VS(%x;%y),%z); (/X[BS]/(%x;%y,spec),P,%z):=(PS(%x;%y),%z); (/X[BS]/(%x;%y,spec),D,%z):=(DS(%x;%y),%z); (/X[BS]/(%x;%y,spec),I,%z):=(IS(%x;%y),%z); (/X[BS]/(%x;%y,spec),C,%z):=(CS(%x;%y),%z); ;============================================================================================ ;============================================================================================ ;6. DEFAULT GRAMMAR: SEMANTIC INTERPRETATION ;============================================================================================ ;============================================================================================ ;Relations /[ACDIJNPV][ACS]/(%x;%y,agt):=agt(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,ant):=ant(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,aoj):=aoj(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,and):=and(%y;%x); /[ACDIJNPV][ACS]/(%x;%y,ben):=ben(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,bas):=bas(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,cag):=cag(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,cnt):=cnt(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,con):=con(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,cob):=cob(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,coo):=coo(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,dur):=dur(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,equ):=equ(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,fld):=fld(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,frm):=frm(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,dur):=gol(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,icl):=icl(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,ins):=ins(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,iof):=iof(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,man):=man(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,mat):=mat(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,met):=met(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,mod):=mod(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,nam):=nam(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,obj):=obj(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,or):=or(%y;%x); /[ACDIJNPV][ACS]/(%x;%y,per):=per(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,plc):=plc(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,plf):=plf(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,plt):=plt(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,pof):=pof(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,pos):=pos(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,ptn):=ptn(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,pur):=pur(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,qua):=qua(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,rsn):=rsn(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,scn):=scn(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,seq):=seq(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,src):=src(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,tim):=tim(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,tmf):=tmf(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,tmt):=tmt(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,to):=to(%x;%y); /[ACDIJNPV][ACS]/(%x;%y,via):=via(%x;%y); ;Default NA(%x;%y):=mod(%x;%y); /[ACDIJPV]A/(%x;%y):=man(%x;%y); /[ACDIJNPV]C/(%x;%y):=obj(%x;%y); VS(%x;%y):=agt(%x;%y); /[ACDIJNP]S/(%x;%y):=mod(%x;%y); ;============================================================================================ ;============================================================================================ ;7. DEFAULT GRAMMAR: RECTIFICATION ;============================================================================================ ;============================================================================================ ;Copula (@pl,{@multal|@paucal|@all|@both}):=(-@pl); eliminates the redundany of @pl (@recent,@present):=(-@present,+@future); agt(%x,COP;%y)obj(%x;%z):=aoj(%z,+att=%x;%y); eliminates the copula agt(%x;%y,N)obj(%x;%z,J):=agt(%x;%y)aoj(%z;%y); transforms the predicate of the object into the predicate of the subject or(%a;and(%b1;%b2),%b):=or(%a;or(%b1;%b2),%b); propagates or to its internal conjunctions aoj(%x,SPR;%y):=pos(%y;%x); replaces aoj by pos when the first argument of the aoj is a possesive pronoun