- , . , , . () , .
, . , , .
21. 521
, ? . , , , , , . .
, . ; , . , DCG. Prolog. , , , . .
. "John paints" ( ). ( Prolog) : paints(john)
, "" , paints .
"John likes Annie" { ). : likes (john, annie)
"" , likes . DCG. , . , , .
|
|
sentence --> noun_phrase, verb_phrase. %
*
noun phra3e -> proper noun. %
verb _ phrase -> intrans verb. % :
verb_phxase --> trans_verb, noun_phrase, %
intransverb --> [ paints]. trans verb --> [ likes]. propernoun -- > [ john]. propernoun --> [ annie).
. ( ), . , . -, . john - john: proper_noun (john) --> [ john].
-, , "". . : paints(X)
522 II, Prolog
X , , , . DCG paints : intrans_verb{ paints(X)) --> [ paints].
: , john paints { X), paints (john)? , X paints john.
, . 21.5. , . () , noun_phrase verb_phrase propernoun intransverb, ,
palnts(jolin>
paints! X) |
paliils(X) |
John |
. 21.5. "John paints", - , . , . ,
. . sentence; S) -> noun_phrase{ HP), verb_phrase(V?), {compose(NP, VP, S)}.
compose! NP, VP, 3) john paints [ X), , X paints { X), : actor(VP, Actor)
21. 523
Actor VP. actor :
|
|
actor! paints(X), X).
actor :
compose(NP, VP, VP):- % VP,
actor(VP, NP). % ^ VP NP
, , . compose actor, paints [ X) "" , . , verb_phrase intrans_verb , X , .
intrans verb(Actor, paints{ Actor)) --> [ paints]. verb_phrase[ Actor, VP) -> intrans^verb(Actor, VP).
Actor : sentence! VP) -> noun_phrase(Actor), verb_phrase(Actor, VP).
"" (Actor) .
, , , DCG. , . "" , paints (SorrieActor). , - ( SomeActor). - ( ""), . Prolog. , . , , " " , ; verb_phrase (Actor, VPMeaning).
. "" likes (Somebody, Something) (- -), Sorr.ebody Something - , . , : trans_verb(Somebody, Something, likes(Somebody, Something)) -> [ likes].
, Something, : verb_phrase(Somebody, VP) -->
trar.s_verb(Somebody, Something, VP), noun_phrase (Something). , DCG .
524 II. Prolog
, "" { ) "every" ( ""), . .
21.3.2. "" "every"
|
|
, , "", , . : "A man paints" ( ). , paints (man), : " , ", " ". : X, , X - X .
X, , , ( ""). , , Prolog: exists! x, man(X) and paints! X)}
X, , and. ::- (100, xfyr and>.
, , , "". "" . , , "a man". : ' X, , X - .
, "a man", "a man paints", - ( , , ). "a man" : exists! X, man! X) and Assertion!
Assertion X. , X, , .. , "a man". Assertion , , .
"". :
X, ,
X ( , man (X)) - , X (, paints(X)).
Prolog : exists! X, Property and Assertion)
, Property Assertion, , .
21. 525
"", . DCG "" . determiner[ X, Prop, Assn, exists (X, Prop and Assn)1 --> [ a].
"" . , "every", . "Every woman dances" ( ). . X, X . X .
|
|
Prolog: all I Xr woman(X) -> dances{ XI)
"=>" - , . , "every" , : all (X, Property ~> Assertion)
DCG, "every" , , determiner! X, Prop, Assn, all{ X, Prop -> Assn)) --> [ every].
, , . , "A man paints", :
exists! X, man[ X) and p a i n t s [ X))
"" : exists[ X, Prop and Assn)
, . , . 21.6; , "" : exists (X, Prop and Assn)
Prop , a Assn . . , , , . , , , . 21.6, DCG:
sentence! S) -> noun_phrase(X, Assn, S), verb_phrase(X, Assn).
no-un phrase [ X, Assn, S) --> determiner; X, Prop, Assn, S), noun (X, Prop).
verb_phrase(X, Assn) --> intrans_verb(X, Assn).
intrans_verb(X, paints[ X)) --> [ paints].
determiner< X, Prop, Assn, exists! X, Prop and Assn)) -> [ a!.
noun(X, man(X]) --> [ man].
Prolog " paints", .
?- sentence! S, [ a, man, paints), []). = exists! X, man { X) and paints! X))
Prolog , 123, Prolog, X
526 II. Prolog
exists) X, man[X) and paints X])
r exists! X. man[ X! and ) |
sxistsj X, Prop and Assn) delarmliier noun \ manfX] inirons vi-irh |
paints(X) |
. 21,6. "A man paints". "". ,
, , , "John paints". , , "A man paints", "John paints". . , . pcoper_noun(John) --> [ John]. noun_phrase (X, Assn., Assnl --> proper_noun j X).
, " ", .. Assn. ( ), :
?- sentence(S, [ John, paints], []). S = paints i John)