(DEFUN SMVG NIL
;;CALLED INSIDE ANY VG
(PROG (TSS TENSE)
(SETQ TSS (GETR 'TIME (MOVE-PT C U (CLAUSE))))
(AND (CQ NEG) (ADD-F-PT 'NEG PT))
;NEG IS TRANSFERRED FROM THE
(SETQ TENSE (GETR 'TENSE C))
;VG TO THE CLAUSE IN WHICH IT
(COND ((MEMBER TENSE
'((PRESENT) (IMPER) (INFINITIVE)))
T)
;IS EMBEDDED.
((EQUAL TENSE '(MODAL))
(SETQ GLOBAL-MESSAGE '(THAT DOESN/'T
MAKE
ANY
SENSE
TO
ME/.))
(ADD-F-PT 'MODAL PT))
;CLAUSES ARE ALSO MARKED AS
((AND (EQUAL TENSE '(FUTURE))
;MODAL.
(ISQ PT QUEST)
(EQUAL (REFER? (CAR (SM (GETR 'SUBJECT
PT))))
'(:SHRDLU)))
; FUTURE QUESTIONS WITH /"YOU/"
(SETQ TENSE '(PRESENT))
;SUBJECT IS REALLY IMPERATIVE
(REMOVE-F-PT 'QUEST PT)
; THE CLAUSE IS NO LONGER
(ADD-F-PT 'IMPER PT))
;QUESTION BUT RATHER,
((SETDIF TENSE '(PAST PRESENT))
;IMPERATIVE
(GLOBAL-ERR '(I DON/'T
KNOW
HOW
TO
HANDLE
TENSES
INVOLVING
FUTURE
EVENTS
OR
MODALS
OTHER
THAN
IN
THE
PRESENT))))
(PUTPROP TSS TENSE 'TENSE=)
(RETURN T)))
(DEFUN SMADJGQSHORT NIL (ERT SMADJQSHORT NOT WRITTEN YET))
(DEFUN SMPRON (NODE)
(EVAL (SM NODE))
(COND ((NULL SM)
(SETQ GLOBAL-MESSAGE (APPEND '(I DON/'T KNOW WHAT /")
(FROM (NB H) (N H))
'(/" REFERS TO)))))
SM)
(DEFUN SMVAUX NIL
(COND ((ISQ H NEG) (FQ NEG)) (T))
(PUTPROP (GETR 'TIME C)
(OR (MEET (FE H) '(PRESENT PAST MODAL))
(ERTERR SMVAUX -- FUNNY TENSE))
'TENSE=))
(DEFUN SMADV NIL (ERT SMADV NOT WRITTEN YET))
(DEFUN SMPLACE NIL (ERT SMPLACE NOT WRITTEN YET))
(DEFUN SMTOADJ NIL (ERT SMTOADJ (UNCT) NOT WRITTEN YET))
(DEFUN SMPROP NIL
;;THIS IS THE SEMANTICS FOR PROPER NOUNS. IT PRODUCES TWO
;;INTERPRETATIONS. ONE IS THE OPAQUE REFERENCE TO THE NAME
;;ITSELF, AS IN /"CALL IT SAM/". THE OTHER IS THE TRANSPARENT
;;REFERENT AS IN /"PICK UP SAM/".
(SMSET (LIST (BUILD OSSNODE=
(MAKESYM 'OSS)
VARIABLE=
'NAME
DETERMINER=
(1. DEF NIL)
PARSENODE=
C
MARKERS=
(/#NAME)
REFER=
(LIST (WORD (NB H))))
(BUILD OSSNODE=
(MAKESYM 'OSS)
DETERMINER=
(1. DEF NIL)
PARSENODE=
C
VARIABLE=
(MAKESYM 'X)
RELATIONS=
(LIST (LIST '/#NAME
OSSNODE=
(WORD (NB H)))))))
(SMNG2))
(DEFUN SMADJ (WORD-BEING-INTERPRETED)
;; THIS FUNCTION TAKES AS INPUT THE PARSE NODE FOR AN
;;ADJECTIVE - NOT COMPARATIVE OR SUPERLATIVE. IT JUST EVAL'S
;;THE DEFINITION. THAT DEFINITION (WHICH SHOULD BE AN NMEANS)
;;MAP'S DOWN THE LIST OF OSS'S IN THE FREE VARIABLE /"SM/". IT
;;CHECKS FOR MARKER COMPATIBILITY AND ATTACHES ITS /"PLANNER/"
;;TO THAT OF THE OSS. IT SHOULD MAKE UP NEW OSS'S IN CASE OF
;;MULTIPLE INTERPRETATIONS OF THE PHRASE. THE OSS'S IT
;;CREATES ARE LEFT IN THE FREE VARIABLE /"SM/". THIS FUNCTION
;;CALLED BY: SMNG1 IT NEEDS TO BE HAIRED UP FOR CONJOINED
;;ADJECTIVES LIKE /"GREEN AND RED BALL/".
(EVAL (SM WORD-BEING-INTERPRETED)))
; EVALUATE THE DEFINITION OF THE ADJECTIVE
;;---------------------------------------------
;;;--------------------------------------------
(DEFUN SMADJG-PREPG NIL
;HANDLES ADJECTIVE GROUPS AND
(PROG (X SMSUB)
;PREPGS BOTH AS COMPLEMENTS
(AND (OR (CQ AGENT) (CQ OF)) (RETURN T))
;AND QUALIFIERS DO NOTHING
(SETR 'LOGICAL-SUBJECT
;FOR /"BY/" PHRASES IN PASSIVE
(COND ((CQ COMP)
(GETR 'SUBJECT
(MOVE-PT C U (CLAUSE))))
;CLAUSES OR /"OF/" PHRASES LIKE
((CQ LOBJ)
;IN THREE OF THE BLOCKS.
(OR (GETR 'OBJ1
(MOVE-PT C U (CLAUSE)))
;SEMANTIC SUBJECT IS THE
(GETR 'SUBJECT PT)))
;SUBJECT OF AN INTENSIVE OR
((ISQ (MOVE-PT C
U
(NOT (ISQ PT COMPONENT))
U)
NG)
PT)
;THE NG TO WHICH THE GROUP IS
((ISQ PT CLAUSE) PT)
;A QUALIFIER, OR THE CLAUSE
((ERTERR SMADJG-PREPG FUNNY POSITION)))
;OF WHICH IT IS AN ADJUNCT.
C)
(SETQ SMSUB (SM (GETR 'LOGICAL-SUBJECT C)))
(AND (CQ ADJG)
(GETR 'OBJ1 C)
(SETR 'ADJGHEAD
(COMPARE-BUILD (GETR 'HEAD C)
(COND ((CQ AS) '/#ASMUCH)
((CQ THAN) '/#MORE)
((ERTERR SMADJG-PREPG
FUNNY
TYPE))))
C))
(COND
((GETR 'OBJ1 C) (SMCL1) (RETURN SM))
((RETURN
(SMSET
(PROG (SM)
(SMSET (MAPCAR
'(LAMBDA (OSS)
(BUILD OSSNODE=
(MAKESYM 'OSS)
MARKERS=
(MARKERS? OSS)
SYSTEMS=
(SYSTEMS? OSS)
VARIABLE=
(VARIABLE? OSS)
REFER=
(REFER? OSS)
REL=
OSS
REFER=
(REFER? OSS)
DETERMINER=
'(NS-PL INDEF NIL)))
SMSUB))
(EVAL (COND ((OR (CQ COMPAR) (CQ SUP))
(FINDMEASURE (GETR 'HEAD
C)))
(T (SM (GETR 'HEAD C)))))
(RETURN SM))))))))
;;;--------------------------------------------
(DEFUN SMIT (PRONOUN)
; PRONOUN IS (IT THEY ONE)
(PROG (CANDIDATES AMBIGUITIES)
; A NODE LIST OF POSSIBLE
(OR DISCOURSE (ERT SMIT: DISCOURSE SWITCH NOT ON))
;REFERENTS
(AND MVB;IS THIS A /"DO IT!/" COMMAND?
(ISQ MVB DO)
(CQ OBJ1)
(RETURN (SMSET LASTEVENT)))
;IF SO, RETURN THE LAST EVENT
(COND ((GET PRONOUN 'BIND)
;MENTIONED IF THIS PRONOUN
(MAP (FUNCTION (LAMBDA (BINDNODE)
(SMIT2 BINDNODE 0.)))
;HAS BEEN USED BEFORE IN THIS
(GET PRONOUN 'BIND))
;SENTENCE THEN USE THE SAME
(RETURN SM))
;CANDIDATES
((SMIT2 (GET PRONOUN 'LASTBIND) 0.)
; IF THIS PRONOUN WAS USED IN
(GO DONE))
;THE PREVIOUS SENTENCE
((OR (MOVE-PT C U U (NG) U U (NG))
;LOOK FOR A STRUCTURE LIKE /"
(MOVE-PT C U U (NG) U (COMP) PV (SUBJ)))
;A BLOCK WHICH IS TALLER THAN
(SMIT2 PT 0.)
;ANYTHING WHICH SUPPORTS IT/"
(MOVE-PT C U U (NG))
;OR /"A
(COND ((ISQ PT DEF)
(ADD-F-PT 'INDEF PT)
(REMOVE-F-PT 'DEF PT)
(MAPC '(LAMBDA (INTERP)
(PUTPROP INTERP
'((EXACTLY 1.)
INDEF
NIL)
'DETERMINER=))
(SM PT))))
(RETURN SM))
;BLOCK TALLER THAN ANYTHING
((OR (MOVE-PT C U (BOUND) U)
;WHICH SUPPORTS IT/"
(MOVE-PT C
U
(AND (ISQ PT CLAUSE)
(ISQ PT COMPONENT))
U
DLC))
(SMIT2 (GETR 'OBJ2 PT) 0.)
(SMIT2 (GETR 'OBJ1 PT) 0.)
(SMIT2 (GETR 'SUBJECT PT) 0.)
(AND (NULL SM)
(ISQ PT RSQ)
(SMIT2 (GETR 'RELHEAD PT) 0.))
(AND SM (RETURN SM))))
(SMIT2 (GETR 'SUBJECT LASTSENT) 192.)
(SMIT2 (PARSENODE? LASTREL) 128.)
;TRY REL (I.E. QUESTION FOCUS
(MOVE-PT LASTSENT DLC)
;) OF THE LAST SENTENCE. GO
UP (COND ((NOT (MOVE-PT PV (NG))) (GO ON))
(ELSE (SMIT2 PT 64.)))
;THROUGH TOP LEVEL NG'S OF
(AND (MOVE-PT PV) (GO UP))
;LAST SENTENCE
ON (OR SM ; IF WE HAVEN'T YET FOUND A
(MAP (FUNCTION (LAMBDA (ANSNODE) (SMIT2 ANSNODE 0.)))
;REFERENT MAP DOWN THE ANSREF
ANSNAME))
;(NG'S IN LAST ANSWER)
(OR SM ; IF WE HAVEN'T YET FOUND A
(MAP
(FUNCTION (LAMBDA (BACKNODE) (SMIT2 BACKNODE 0.)))
;REFERENT MAP DOWN THE
BACKREF2))
;BACKREF2 (NG'S IN LAST
DONE (PUTPROP PRONOUN CANDIDATES 'BIND)
;SENTENCE) LIST
(OR (CDR SM) (REMPROP (CAR SM) 'AMBIGUITIES=))
(RETURN SM)))
(DEFUN SMIT2 (NODE PLAUSIBILITY)
(AND
NODE ; MAKE SURE NODE IS REALLY
(GETR 'HEAD NODE)
;THERE QUEST NODES (SUCH AS
(NOT (MEMQ (CAR NODE) CANDIDATES))
;/"WHAT/") OR OTHER NODES WITHOUT HEAD NOUNS ARE
(COND ((EQ PRONOUN 'IT)
;NOT SUITABLE FOR REFERENTS MAKE SURE THAT NODE
(AND (ISQ NODE NS) (NOT (ISQ NODE PRONG))))
;HASN'T ALREADY BEEN USED AS
(ELSE (ISQ NODE NPL)))
;REFERENT MAKE SURE NODE AND
(SETQ CANDIDATES (CONS (CAR NODE) CANDIDATES))
;PRONOUN AGREE IN NUMBER
(SMSET
(NCONC
(MAPCAR
(FUNCTION
(LAMBDA (REFERENT-OSS)
(BUILD OSSNODE=
(MAKESYM 'OSS)
MARKERS=
(MARKERS? REFERENT-OSS)
SYSTEMS=
(SYSTEMS? REFERENT-OSS)
PLAUSIBILITY=
PLAUSIBILITY
AMBIGUITIES=
(LIST (LIST OSSNODE=
(FROM (NB NODE) (N NODE))
C))
REFER=
(REFER? REFERENT-OSS)
VARIABLE=
(VARIABLE? REFERENT-OSS)
; INPUT PARAMETER
PARSENODE=
C
; USE THE REFERENT'S REFERENT
DETERMINER=
;IF IT HAS ONE
(LIST (COND ((ISQ C NPL) 'NPL)
('NS))
'INDEF
NIL)
RELATIONS=
(LIST (LIST '/#REFERS
; DONE SO THAT IF VARIBLE IS BOUND, PLANNER
(VARIABLE? REFERENT-OSS))))))
;GENERATOR WILL USE IT RELATION SAYS
(SM NODE));THAT THIS OSS /"REFERS/" TO
SM)))) ;THE OSS WHOSE VARIABLE NAME IS GIVEN END OF
;BUILD
(DEFUN SMNGOF NIL
;; USED TO PROCESS NOUN GROUPS LIKE= /"THREE OF THE BLOCKS/"
;;/"BOTH OF THEM/"
;;;
;; SINCE THE OBJECT OF THE /"OF/" MUST BE
;;DEFINITE(SYNTACTICALLY) AND HAS ALREADY BEEN PROCESSED, THE
;;PLANNER CODE BUILT IS JUST A THAMONG EXPRESSION OF THE LIST
;;OF POSSIBLE REFERENTS OF THE /"OF/" OBJECT
;;;
(SMSET
(MAPBLAND
(FUNCTION
(LAMBDA (OFOSS)
(BUILD OSSNODE=
(MAKESYM 'OSS)
VARIABLE=
(VARIABLE? OFOSS)
SYSTEMS=
(SYSTEMS? OFOSS)
MARKERS=
(MARKERS? OFOSS)
PARSENODE=
C
DETERMINER=
(LIST (COND ((CQ NUM)
(SM (MOVE-PT H PV (NUM))))
((ISQ NB BOTH) 2.)
('NPL))
(COND ((MOVE-PT H PV (QNTFR))
(EVAL (SM PT)))
('INDEF))
(COND ((CQ HOWMANY) 'HOWMANY)
((CQ QDET) 'WHICH)))
RELATIONS=
(LIST (LIST 'THAMONG
(LIST 'THV
(VARIABLE? OFOSS))
(LIST 'QUOTE
(REFER? OFOSS)))))))
(SM (MOVE-PT H DLC)))))
;MAP DOWN THE LIST OF /"OF/" OBJECT
;INTERPRETATIONS
;;;=============================================================
--cont--