"PARSER for BEYOND ZORK: Copyright (C)1987 Infocom, Inc. All rights reserved." > > ; 2>> > > > > > > "FIX #36" > > > > > > > > "Which noun phrase is being parsed?" > > > > > > > > > "Parse-continue flag." > > > > > > "Orphan flag" > > > > ; > "Byte offset to # of entries in LEXV" "Word offset to start of LEXV entries" "Number of words per LEXV entry" "Offset to parts of speech byte" "Offset to first part of speech" "First part of speech bit mask in PSOFF byte" "In bytes (for COPYT)." > > > > ; > > > > <> <> <>>> > ; "FIX #44" > > " Grovel down the input finding the verb, prepositions, and noun clauses. If the input is or , fall out immediately setting PRSA to ,V?WALK and PRSO to . Otherwise, perform all required orphaning, syntax checking, and noun clause lookup." ) (OF-FLAG <>) (LEN 0) (DIR <>) (NW 0) (LW 0) OWINNER OMERGED WRD X) )> > > > > > > > > > > > > > > > >)> > > >> ,VEHICLE>> >)> >)> ; "FIX #36" > )> > >) ( > > )>) (T > ,VEHICLE>> >)> > 4> )> ) ( > ) (T )> ) () () ( > )>) ( > )>) ( > > )>> )>)> )> "> )> > ,W?QUOTE> ; "Quote first token?" > ; "If so, ignore it." >)> ,W?THEN ,W?PLEASE ,W?SO> > ; "Ignore boring 1st words." >)> ,W?GO> ; "GO first word?" >> > ;" Followed by verb?" > ; "If so, ignore it." >)> )> > )> > > )> >> )>> > ,W?PERIOD ,W?COMMA> > >)> ; "FIX #38" > > ) ( ; "FIX #39" > ,W?QUOTE> )> )> >> ;"Fixes OOPS w/chars" 6>> 7>> <+ <* ,P-LEXELEN> 3>> > > ) (T > )>) (T > > )> >)> ,W?AGAIN ,W?G> >> ; "FIX #50" > ) ( > ,W?PERIOD ,W?COMMA ,W?THEN> > ,W?AND>> >> 2>>) (T )>) (T > 1>>)> 0> ; ; ; "FIX #36" ) (T >)> ; > ; ; ; "FIX #44" ; ; ) (T >)>>) (T ; "Fixed BM 2/28/86" ; ; > ; "FIX #37" >>>> > >>> > > > )> > ) ( > > ; > > ) (T >>)> > ; ) ( ; > ; "FIX #40" > ) ( > > )> ; "FIX #40" > ) ( ,W?QUOTE> > >>> > ) (T )>) ( >) (T )>)> >> ) (> ,ACT?WALK ,ACT?GO> > > ; > > >>> ,W?THEN>)> > > )>) (> > ; "For RUN, etc." 2>> > >>) (> > ; "Fix for new zilch, 3/12/87." ; "1 IN RETROFIX #34" > > >> ; )> ; "Save OF-word" ) ( >> )>) ( ) (T > > ) ( > )>)>) ( ; "RETROFIX #34" > ) (T >)>) () ( > ) (T )>) (T )> >>)> > ; "FIX #44" > )> > > ; "FIX #44" > ) ; (T )> ; > )> ; "Why was this here?" ; > >> )> > > > > >>> > >> >> >> )> > "Check whether word pointed at by PTR is the correct part of speech. The second argument is the part of speech (,PS?). The 3rd argument (,P1?), if given, causes the value for that part of speech to be returned." > > ) ( )> > > >)> >> ; > )> > > )> >) (T )>> "Scan through a noun phrase, leaving a pointer to its starting location:" ) (LW 0) OFF NUM NW) 2>> > .VAL> .WRD> >) (T >)> > )> > >> ,W?THE ,W?A ,W?AN> ,W?$BUZZ>> ; ,W?THE ,W?A ,W?AN> 4>>)> >> )> > ) ( > > ; >> ) (T >> ; "FIX" >>)>)> ; ,ACT?MAKE ,ACT?TAKE>> )> >> > ) (T )>) ( > ) ( ) ( ; > > >)>) ( >> > >> >) ;"3/16/83: This clause used to be later." ( > ;"10/26/84: next stmt changed" >> > ,W?THEN> >) ( >> .WRD>) ( >) ( > >> 2>>> ) (T >)>) ; "Next clause replaced by following one to enable OLD WOMAN, HELLO" ; ( >> >>) () () ( >> > ,W?THEN> >) () (T )>) (T )> > >>> > >> )> > > >> > >> ) (>> )>>)> > ) (T )> > > > )> > > ) ( ) ( ) ( ) (T )>> > > ) (> >) (T > > )> > > ) (I <>) "AUX" (V <>) (WHO <>) OA OO OI ONP X) #DECL ((A) FIX (O) (I) ) > >> )> > > >> ) ( >> ) (> > ) ( > )> )> ) (T )>) (T )> )> )>)> >> ) (T )> )> )> )>) (T ) (T )> )>)> > )> )> )>) (T ) (T )> )>)> > )> )> )>) (T ) (T )> )>)> )> )>)> > > > > >)>)> > )> ,M-WINNER>>)> ,P?ACTION> ,M-BEG>>)> >>)> ) (> ) (> > ,P?CONTFCN>> >)>)> > ) () (> > ,P?CONTFCN>> >)>)> ) ( >>)>)> > ) () (> >>)> >>)> > ,P?ACTION> ,M-END>)> > ) "AUX" OBJ) > ) ( )>) (> )>)> >> )>>)> ) (T )>> > .LEN>> )> > .LEN>> )> > .LEN>> > )> )> > > .LEN>> )>)> > > > >> )> )>> > )> > )> > > > >> ) (T )>> "For AGAIN purposes, put contents of one LEXV table into another." ; > > > 2>> > 3>> > > )>>> "Put contents of one INBUF into another." ; 1>> > )>>> "Put the word in the positions specified from P-INBUF to the end of OOPS-INBUF, leaving the appropriate pointers in AGAIN-LEXV." > ) (T >> >>>)> > >> )>> .LEN> > ; > ) (EXC <>) ; (DOLLAR 0) CNT BPTR CHR CCTR TMP NW) >> > > )> )> > > )> ) (> )> ) ( ) ; (> ) ( 1>> 1>>> <- .CHR %>>>) (T )> > >> ; > >>> )> .TMP>> > )> > >>> 2> > 2> 2>>> 3> > 2> 3>>> > 2>>>)>)> ; >) ( >) ( )> ) ( ) ( ) () ( ) () (T >)> >>) (T )> ; ; > )> ; > > ; > 2>> > 3>> )> > )> > <- .CHR 48>>>) (T )> > ) ( >)> > "Old ORPHAN-MERGE." ; ) WRD) > 0>> ,PS?VERB ,P1?VERB> > > ) ; "FIX #45" ( 0>> ,PS?ADJECTIVE ;,P1?ADJECTIVE> ) ( > > > )> >> >>> ) ( ) ( 1> > > > > > ;"? DELETE?" >)> ;"? DELETE?" )>) (T > ;>)> >) (T )>) ( 1> > > > > > ;"? DELETE?" >)>)> > > ) (T )>) ( > > > ) (T > > >)> > > ; ) (T > )>) ( ,PS?ADJECTIVE> ;"same as WT?" >> ) ; ( ; ) ( ,PS?OBJECT> ; ) (T ; )> )> > > )>>)>)> > > > ; 0>> > )> >>> "New ORPHAN-MERGE." ) TEMP VERB BEG END WRD X) > 0>> > .X> > ) ( > > > )> > >>> ) ( ) ( 1> > >> > > >)> )>) (T >)> >) (T )>) ( 1> > >> > > >)>)> > > ) (T )>) ( > > > ) (T > )> > > >)> > > ) (T > )>) ( ,PS?ADJECTIVE> ;"same as WT?" ; >> ) ( ) ( ,PS?OBJECT> .END>> ) (T )> )> > > )>>)>)> > > > ; 0>> > ; ; )> >> > "ACLAUSE- and NCLAUSE-WIN are replaced by CLAUSE-WIN." ; > > > > > > ; > > > > > ) X) >) (T )> )> .X .ADJ> ; ,P-OCL1) (T ,P-OCL2)> .ADJ> 0>> )> > > "Print undefined word in input. PTR points to the unknown word in P-LEXV" )> > >)> > > > > >> > ; "Length of word typed." > ; "Starting offset into P-INBUF." )> > > )>>)> > > "]" CR> > " Perform syntax matching operations, using P-ITBL as the source of the verb and adjectives for this input. Returns false if no syntax matches, and does it's own orphaning. If return is true, the syntax is saved in P-SYNTAX." ) (DRIVE2 <>) SYN LEN NUM OBJ PREP VERB X Y) > )> >> > > ,P-SONUMS>> > > ) ; "Added 4/27/83" (> > ) (> > ) ( > > )>)> > )> )> >> > > >> > )>)> ; > ; > ; >> ; > > )> ; >> > > >> > )>) ; ( > > ) ( )> ) (T )> ) ( ,PERSON>> ,PERSON>>> ) (T )> ) (T )> )> > ) (T )>> ) (T > )> > > ;"? ,P-OTBL?" ) (> >) (T > > )>> )> > > > ; ; )> >> )> > )> > ) ( > )> > > .THE?> > ) WRD (FIRST?? T) (PN <>) LEN) )> > ) ( ) ( >) (T )> >> >> >>> )> > > > >>> ) ( ) ( .LEN>> ) (T > > )> > ) ( > ) ( > ) ( > ) ( > ) (T .LEN>)> >)> >>> > .X>> )> > > >) (T > ,SP>> 1> <+ 1>>)>> > )> > 0>> > )> 0>> > ; "Will it ever work? --SWG" )> )>> "Old CLAUSE-COPY." ; > ; ) "AUX" BEG END) > > ,P-LEXELEN> 2>>> ,P-LEXELEN>>>> ) (T >> )> >)> >>> "Pointers used by CLAUSE-COPY (source/destination beginning/end pointers)." ; ; ; ; > ) "AUX" ; (FLG <>) BEG END OBEG CNT B E ; X) > > > ; >> )> )> >> ; > ; > ; > > )> > >>) (T )> > .X>> > .END>>> > ,P-WORDLEN>>> > > )> > > )>>)> >> > > > > )> > > >>) (T 0> )>)>> ) ( )> .OCL> >>) (T >> )> )> > > )> .OCL> >>) (T >> )> )>) ; ( .OCL>) (T .OCL>)> >> .OBEG>> ; > > .OCL> > )> >> )> 2>>> ,P-LEXELEN> 2>>> > ; 2>> .WRD> > > > 2>> ) ( .PREP> >>)>>> )) ) ( ,NOT-HERE-OBJECT>> > >) (T )>) ( ,NOT-HERE-OBJECT>> > ) ( ,NOT-HERE-OBJECT>> > ) ( ,NOT-HERE-OBJECT>> > )> )> > 1> > >> > )> )> )> ) ( ) (T )>> > > ,P-PRSO>> )> >)>)> > > ,P-PRSI>> )> 1> > )> >)>)> > > )> > > >>> ; .OBJ> ; > )> > > "Grabs the first adjective, unless it comes across a special-cased adjective." ; )) ) ( )>> ) LEN WV WRD NW (WAS-ALL? <>) ONEOBJ) ;"Next SETG 6/21/84 for WHICH retrofix" > )> > >> )> ) (T > ) (T >)> >)>) ( >> )> ) ( ) ( >)>) (T >> )> )>)>) ( >> ;"Next SETG 6/21/84 for WHICH retrofix" >> )>) () () ( )>) ( >> ; "FIX #41" ) ( )>)> > > )>>> ) (OLEN 0) BTS LEN XBITS TLEN OBJ ADJ X XTBL TTBL TOBJ) > )> > >) (> > )>)> > > )> )> > > )> ) (T )> .TLEN>> ) ( > >> "?]" CR>)> ) ( >>> .LEN>> ) (T )> >>> >> > .TTBL>> )> > .OBJ> > > > )>)> >> ) ( > )> ) ( 22> ) (T )> <>> )>) ( )> > > )>) ( ) ( > ; "RETROFIX #33" > > )> )> > > ) ( )> >> > )> > > >> > ; > ; "Needed only for ZIL" "This MOBY-FIND works in ZIP only!" > > )> )>> > >)> > "This MOBY-FIND works in both ZIL and ZIP." ; ; )> % ; "ZIP case" '> > >> >)> )>>>) (T ;"ZIL case" ' > >> )>>)> >)> > 1> >)> > > > )> ) ( >) (T >)> > > )> ) ( )> )>> > > > > > > "T if original PRSO was PSEUDO-OBJECT." > )> > > > > > > )> )> )>>)> > > >> >>>> ) (T >)> >> ; 5>> ; > ; > )> > > )>>)> .LEN> ; > )>)>)>> > ) (T ) ( ) (T )>)>> > > > )> > > > ; > )> )> >> )>>)> > >> 2>>> >>>> ) ( >> 2>>> >>>> ) ( >> ) (T )>> > > ; > >> ) (T )>> > ) ( > > > )> ) ( > )> ) ( > )> ) ( > )> )> > > > > > ; >> > ) ( >> > )>) ; (>) ( ; ; > >> ) ( > )> > > ) ( ) (T ) (> ) ( ) (T )>)> )> ) ( ; > )>)> )>>)> > ) () (> )> > ,ROOMS ,GLOBAL-OBJECTS> ) ( )> >> > <>>> )> .OBJ> > ; > >> )> ; 0> )> >> > ) (T )>) ( > ) (T )>) ( > ) (T )>) ( > ) (T )>)> > >> > ) ( >> ) (> >) ( >> >) ( > >) (T )> > > ) ( ) (T ) (> )> )> ) ( > )> >)>)>>) (T )>> ) TMP) 1> ,SMANY>>> ) ( 1> ,SMANY>>> )> > > ) ( > >) (T >)> ) (T )>> > > > > )> > ) ( > > ) (T )>> > )> > ) (T > > )>)> 0> )>)> > > ) ( ) ( > > > )> )> )> ) (T )> > > )> ) ( ) ( ) ( ) ( ) (T )> > ) ( ) ( ) ( ) ( ) (T )> > )> > )> > > ) ( ) (T >)> > > )>) (T )>)>) (T > > )>) (T )>)>)> ) ( ) (T )> > .LEN>>> )> > > )> ) ( > .TBL>>> ,NOT-HERE-OBJECT> ) ( )> ) ( ) ( ) (T )>> ) "AUX" X) > )> )> ) ( > <>> ) (T > <>> )>> ) "AUX" OBJ NXT (1ST? T) (IT? <>) (TWO? <>)) > > > )> )>>)> > >) (T > >) (T ) ( ) (T )>)> > )> > )> ; )> > ) (T >)> ) (T > )> )>>)> > > > > > >> )> )>>)> > "Note that the object to be searched is the FIRST parameter expected in this version of GLOBAL-IN? ... allowing optional target objects." > )> 2>> > ) (> ) (> ) (> ) (> ) (T )>> ; > 2>> ; >)>> > > > > > )> > > >> >> > )>) () ( > > > )> > )> > ) ( )> > )>) ( )> > )> ) ( > >> )> > ) ( )> )> > >> >>)> )> > ) () ( .ILEN>> ) ( 0> ,SP>> > )> > > > > %>> .OFFSET>> )> )>> .OFFSET>> >> > > %>> ) ( 1>> 1>>> >)> )>>> > ; "Get direction of mouse relative to HERE." ; "Changed per TAA. Instead of using COMPASS, we do computation. Cardinal directions happen if one coordinate is L=? half of the other. Otherwise do nw, etc." > ; "We're in the same room, so check for up/down" > ,MAPX>> ) ( ) (T )>) (T > ; "Get position relative to current" ;) ( >) ( >)> ;>> > ;) ( >) ( >)> ;>> ;>> .NX>> ; "Get magnitude of X and Y difference" >) (T )> >) (T )> <0? .MY>> ) ( .MY> ; "X is small compared to Y, so this is N/S" ; "Mouse is below current loc" ) (T )>) ( .MX> ; "Y is small compared to X, so this is E/W" ) (T )>) ( ; "Tending eastward" ) (T )>) ( ) (T )>)> ; "DIR ambiguous." )> > > )> > > >> > ) ( )> > ) ( ) (T )>)>)> > "PICK-ONE expects an LTABLE, with an initial element of 0." > > > >> >> > > )> > "PICK-NEXT expects an LTABLE of strings, with an initial element of 2." > > > )> > > > ) (NAMING <>) "AUX" (WRD 0)) ) ( > )> > ; "Neutralizes W?QUOTE." > > >> )> > ) ( ) ( )>) ( >) (T > > )>) (T )> > >>> > > > )>>)> >