73 lines
3.6 KiB
Plaintext
73 lines
3.6 KiB
Plaintext
<FLAGS-AND-DEFAULTS (("P-ZORK0" %<>)("ONE-BYTE-PARTS-OF-SPEECH" %<>)(
|
|
"WORD-FLAGS-IN-TABLE" T)("IN-ZILCH" T)("P-APOSTROPHE-BREAKS-WORDS" T)(
|
|
"P-BE-VERB" T)) (("SETUP-ORPHAN" "DEFS" #WORD *00651007407*) ("PRINT-INTQUOTE"
|
|
"DEFS" #WORD *00651007407*))>
|
|
|
|
<ZZPACKAGE "PARSER">
|
|
<RENTRY PRINT-LEXV TELL-CTHE TELL-THE>
|
|
<INCLUDE "BASEDEFS" "PBITDEFS" "PDEFS">
|
|
<USE "PMEM" "PSTACK" "REDS">
|
|
<FILE-FLAGS MDL-ZIL? CLEAN-STACK?>
|
|
<BEGIN-SEGMENT 0>
|
|
<DEFAULTS-DEFINED CANT-FIND-OBJECT CANT-USE-MULTIPLE DONT-UNDERSTAND
|
|
PRINT-INTQUOTE PRINT-LEXV REFRESH SETUP-ORPHAN SETUP-ORPHAN-NP TOO-MANY-NOUNS
|
|
WHICH-LIST? WHICH-PRINT WINNER-SAYS-WHICH? YES?>
|
|
<DEFINE-ROUTINE TOO-MANY-NEW>
|
|
<DEFINE-ROUTINE NAKED-OOPS>
|
|
<DEFINE-ROUTINE CANT-OOPS>
|
|
<DEFINE-ROUTINE CANT-AGAIN>
|
|
<DEFAULT-DEFINITION CANT-USE-MULTIPLE <ROUTINE CANT-USE-MULTIPLE>>
|
|
<DEFINE-ROUTINE MAKE-ROOM-FOR-TOKENS>
|
|
<DEFINE-ROUTINE REPLACE-ONE-TOKEN>
|
|
<DEFAULT-DEFINITION REFRESH <ROUTINE V-$REFRESH>>
|
|
<DEFAULT-DEFINITION PRINT-INTQUOTE <DEFINE PRINT-INTQUOTE ("AUX" (NP <GET-NP ,
|
|
INTQUOTE>)) <PRINT-LEXV -1 <ZREST <NP-LEXBEG .NP> ,LEXV-ELEMENT-SIZE-BYTES> <+
|
|
-1 </ <- <NP-LEXEND .NP> <NP-LEXBEG .NP>> ,LEXV-ELEMENT-SIZE-BYTES>>>>>
|
|
<DEFAULT-DEFINITION PRINT-LEXV <ROUTINE PRINT-LEXV>>
|
|
<DEFINE-ROUTINE COPY-INPUT>
|
|
<COND (<NOT <OR <CHECK-VERSION? XZIP> <CHECK-VERSION? YZIP>>> <DEFINE
|
|
COPY-INBUF (SRC DEST "AUX" CNT:FIX) <SET CNT <- <GETB .SRC 0> 1>> <REPEAT () <
|
|
PUTB .DEST .CNT <GETB .SRC .CNT>> <COND (<L? <SET CNT <- .CNT 1>> 0> <RETURN>)>
|
|
>> <DEFINE COPY-LEXV (SRC DEST "OPT" (MAX:FIX ,LEXV-LENGTH) "AUX" (CTR:FIX 1))
|
|
<PUTB .DEST 0 <GETB .SRC 0>> <PUTB .DEST 1 <GETB .SRC 1>> <SET DEST <ZREST .
|
|
DEST <* ,P-LEXSTART:FIX 2>>> <SET SRC <ZREST .SRC <* ,P-LEXSTART:FIX 2>>> <
|
|
REPEAT () <ZPUT .DEST 0 <ZGET .SRC 0>> <PUTB .DEST 2 <GETB .SRC 2>> <PUTB .DEST
|
|
3 <GETB .SRC 3>> <COND (<G? <SET CTR <+ .CTR 1>> .MAX> <RETURN>)> <SET DEST <
|
|
ZREST .DEST <* 2 ,P-LEXELEN:FIX>>> <SET SRC <ZREST .SRC <* 2 ,P-LEXELEN:FIX>>>>
|
|
>)>
|
|
<END-SEGMENT>
|
|
<BEGIN-SEGMENT 0>
|
|
<ADD-WORD NO.WORD ADJ>
|
|
<DEFINE-ROUTINE BUFFER-PRINT>
|
|
<DEFINE-ROUTINE CAPITALIZE>
|
|
<DEFINE-ROUTINE PRINT-PARSER-FAILURE>
|
|
<DEFINE-ROUTINE NAKED-ADJECTIVE?>
|
|
<DEFINE-ROUTINE CHANGE-AND-TO-THEN?>
|
|
<DEFAULT-DEFINITION DONT-UNDERSTAND <ROUTINE DONT-UNDERSTAND>>
|
|
<DEFINE-ROUTINE MISSING>
|
|
<DEFAULT-DEFINITION CANT-FIND-OBJECT <ROUTINE CANT-FIND-OBJECT> <ROUTINE
|
|
NP-CANT-SEE>>
|
|
<DEFAULT-DEFINITION WINNER-SAYS-WHICH? <ROUTINE WINNER-SAYS-WHICH?>>
|
|
<DEFAULT-DEFINITION WHICH-LIST? <ROUTINE WHICH-LIST?>>
|
|
<DEFAULT-DEFINITION WHICH-PRINT <ROUTINE WHICH-PRINT>>
|
|
<DEFINE-ROUTINE NP-PRINT>
|
|
<DEFINE-ROUTINE ADJS-PRINT>
|
|
<DEFAULT-DEFINITION TOO-MANY-NOUNS <ROUTINE TOO-MANY-NOUNS>>
|
|
<DEFINE-ROUTINE INBUF-ADD>
|
|
<DEFINE-ROUTINE INBUF-PRINT>
|
|
<DEFAULT-DEFINITION YES? <CONSTANT YES-INBUF <ITABLE 19 (BYTE LENGTH) 0>> <
|
|
CONSTANT YES-LEXV <ITABLE 3 (LEXV) 0 0>> <ROUTINE YES?>>
|
|
<DEFAULT-DEFINITION SETUP-ORPHAN <DEFINE SETUP-ORPHAN (STR "OPT" (A <>) (B <>))
|
|
<DIROUT ,D-TABLE-ON ,O-INBUF> <TELL .STR> <COND (<T? .A> <COND (T <TELL D .A>)>
|
|
<COND (<T? .B> <COND (T <TELL .B>)>)>)> <DIROUT ,D-TABLE-OFF> <PUTB ,O-INBUF 0
|
|
,INBUF-LENGTH> <LEX ,O-INBUF ,O-LEXV> <COND (<ZERO? <SET A <GETB ,O-LEXV ,
|
|
P-LEXWORDS>>> <>) (<INTBL? 0 <ZREST ,O-LEXV <* 2 ,P-LEXSTART>> .A 132> <>) (T <
|
|
SETG P-OFLAG <+ 1 <* ,P-LEXELEN <GETB ,O-LEXV ,P-LEXWORDS>>>> <
|
|
MAKE-ROOM-FOR-TOKENS 1 ,O-LEXV ,P-OFLAG> <ZPUT ,O-LEXV ,P-OFLAG ,W?NO.WORD> <
|
|
SETG P-OFLAG <- 0 ,P-OFLAG>> <FIND-RES-COUNT ,ORPHAN-SR 0> <ZPUT ,OOPS-TABLE ,
|
|
O-AGAIN <ZREST ,P-LEXV <* 2 ,P-LEXSTART>>> T)>>>
|
|
<DEFAULT-DEFINITION SETUP-ORPHAN-NP <ROUTINE SETUP-ORPHAN-NP>>
|
|
<DEFINE-ROUTINE INSERT-ADJS>
|
|
<DEFINE-ROUTINE INSERT-ADJS-WD>
|
|
<END-SEGMENT>
|
|
<ENDPACKAGE> |