268 lines
15 KiB
Plaintext
268 lines
15 KiB
Plaintext
<FLAGS-AND-DEFAULTS (("LONG-WORDS" %<>)("UNDO" T)("P-PS-ADV" %<>)(
|
|
"P-DEBUGGING-PARSER" %<>)("ONE-BYTE-PARTS-OF-SPEECH" %<>)("WORD-FLAGS-IN-TABLE"
|
|
T)("IN-ZILCH" T)("P-BE-VERB" T)) (("BUZZER-WORD?" "DEFS" #WORD *00726107774*) (
|
|
"TELL-CTHE" "DEFS" #WORD *37636524210*) ("TELL-THE" "DEFS" #WORD *10632536250*)
|
|
("SPECIAL-CONTRACTION?" "DEFS" #WORD *22117166400*) ("ROOMSBIT" "DEFS" #WORD
|
|
*25712643046*) ("PERSONBIT" "DEFS" #WORD *32442731556*) ("NARTICLEBIT" "DEFS" #
|
|
WORD *11626040112*))>
|
|
|
|
<ZZPACKAGE "PARSER">
|
|
<ENTRY PARSER PARSE-SENTENCE PARSE-IT PARSER-ERROR TLEXV P-OFLAG P-WALK-DIR
|
|
RED-SD>
|
|
<RENTRY DEBUG-PARSER>
|
|
<RENTRY ACCESSIBLE? BUZZER-WORD? DIR-VERB? FEMALE GLOBAL-OBJECTS LIT LIT? ONBIT
|
|
OPENBIT P-INBUF P-LEXV P-NUMBER P?THINGS PERFORM PERSONBIT PLAYER
|
|
PRINT-VOCAB-WORD SEARCHBIT SPECIAL-CONTRACTION? SURFACEBIT TAKEBIT TELL-CTHE
|
|
TELL-THE TITLE-ABBR? TRANSBIT TRYTAKEBIT VERBOSITY VISIBLE? WINNER>
|
|
<INCLUDE "BASEDEFS" "PBITDEFS" "PDEFS" "SYMBOLS">
|
|
<USE "PSTACK" "PMEM">
|
|
<FILE-FLAGS MDL-ZIL? CLEAN-STACK?>
|
|
<BEGIN-SEGMENT 0>
|
|
<COMPILATION-FLAG-DEFAULT P-APOSTROPHE-BREAKS-WORDS T>
|
|
<COMPILATION-FLAG-DEFAULT P-BE-VERB <>>
|
|
<DEFAULTS-DEFINED BE-PATIENT BEG-PARDON BUZZER-WORD? COLLECTIVE-VERB? CONTBIT
|
|
DIR-VERB? FEMALE GAME-VERB? INVISIBLE LIT? NARTICLEBIT NUMBER? ONBIT OPENBIT
|
|
P-NO-MEM-ROUTINE PERSONBIT PLAYER PLURAL QCONTEXT-CHECK READ-INPUT ROOMSBIT
|
|
SEARCHBIT SEENBIT SPECIAL-CONTRACTION? STATUS-LINE SURFACEBIT TAKEBIT TELL-CTHE
|
|
TELL-GWIM-MSG TELL-THE TITLE-ABBR? TOUCHBIT TRANSBIT TRYTAKEBIT UNKNOWN-WORD>
|
|
<COND (<NOT <GASSIGNED? DEBUG-PARSER>> <SETG DEBUG-PARSER <>>)>
|
|
<DEFAULT-DEFINITION CONTBIT T>
|
|
<DEFAULT-DEFINITION FEMALE T>
|
|
<DEFAULT-DEFINITION INVISIBLE T>
|
|
<DEFAULT-DEFINITION NARTICLEBIT T>
|
|
<DEFAULT-DEFINITION ONBIT T>
|
|
<DEFAULT-DEFINITION OPENBIT T>
|
|
<DEFAULT-DEFINITION PERSONBIT T>
|
|
<DEFAULT-DEFINITION PLAYER T>
|
|
<DEFAULT-DEFINITION PLURAL T>
|
|
<DEFAULT-DEFINITION ROOMSBIT T>
|
|
<DEFAULT-DEFINITION SEARCHBIT T>
|
|
<DEFAULT-DEFINITION SEENBIT T>
|
|
<DEFAULT-DEFINITION SURFACEBIT T>
|
|
<DEFAULT-DEFINITION TAKEBIT T>
|
|
<DEFAULT-DEFINITION TOUCHBIT T>
|
|
<DEFAULT-DEFINITION TRANSBIT T>
|
|
<DEFAULT-DEFINITION TRYTAKEBIT T>
|
|
<DEFMAC IF-SHORT ('EXPR1 "OPT" 'EXPR2) <COND (<L=? ,NUMBER-WORD-CLASSES 15> <
|
|
COND (<AND .EXPR1 <N==? .EXPR1 '<>>> .EXPR1)>) (<ASSIGNED? EXPR2> .EXPR2)>>
|
|
<CONSTANT STATE-STACK <ALLOCATE-PSTACK>>
|
|
<CONSTANT SPLIT-STACK <ALLOCATE-PSTACK>>
|
|
<CONSTANT DATA-STACK <ALLOCATE-PSTACK>>
|
|
<CONSTANT LEXV-LENGTH 59>
|
|
<CONSTANT LEXV-LENGTH-BYTES <+ 2 <* 4 ,LEXV-LENGTH>>>
|
|
<CONSTANT P-LEXV <ITABLE ,LEXV-LENGTH (LEXV) 0 #BYTE *00000000000* #BYTE
|
|
*00000000000*>>
|
|
<CONSTANT G-LEXV <ITABLE ,LEXV-LENGTH (LEXV) 0 #BYTE *00000000000* #BYTE
|
|
*00000000000*>>
|
|
<CONSTANT O-LEXV <ITABLE ,LEXV-LENGTH (LEXV) 0 #BYTE *00000000000* #BYTE
|
|
*00000000000*>>
|
|
<CONSTANT INBUF-LENGTH <+ 1 ,LEXV-LENGTH>>
|
|
<CONSTANT P-INBUF <ITABLE ,INBUF-LENGTH (BYTE LENGTH) 0>>
|
|
<CONSTANT G-INBUF <ITABLE ,INBUF-LENGTH (BYTE LENGTH) 0>>
|
|
<CONSTANT O-INBUF <ITABLE ,INBUF-LENGTH (BYTE LENGTH) 0>>
|
|
<CONSTANT P-LEXWORDS 1>
|
|
<CONSTANT P-LEXSTART 1>
|
|
<CONSTANT P-LEXELEN 2>
|
|
<CONSTANT OOPS-TABLE <TABLE <> <> <> <> <>>>
|
|
<CONSTANT O-START 0>
|
|
<CONSTANT O-LENGTH 1>
|
|
<CONSTANT O-END 2>
|
|
<CONSTANT O-PTR 3>
|
|
<CONSTANT O-AGAIN 4>
|
|
<GLOBAL WINNER:OBJECT PLAYER>
|
|
<GLOBAL P-OFLAG:NUMBER 0>
|
|
<GLOBAL P-NUMBER:NUMBER 0>
|
|
<GLOBAL CURRENT-REDUCTION <>>
|
|
<GLOBAL PARSER-RESULT <>>
|
|
<GLOBAL P-WALK-DIR <>>
|
|
<GLOBAL TLEXV 0>
|
|
<GLOBAL OTLEXV 0>
|
|
<CONSTANT ERROR-ARGS:TABLE <ITABLE 4 <>>>
|
|
<GLOBAL ERROR-STRING:STRING <>>
|
|
<GLOBAL ERROR-PRIORITY:NUMBER 0>
|
|
<ADD-WORD "AGAIN" MISCWORD>
|
|
<ADD-WORD "G" MISCWORD>
|
|
<ADD-WORD "OOPS" MISCWORD>
|
|
<ADD-WORD "O" MISCWORD>
|
|
<GLOBAL P-LEN:NUMBER 0>
|
|
<DEFAULT-DEFINITION STATUS-LINE <DEFINE INIT-STATUS-LINE () <SPLIT 1> <SCREEN ,
|
|
S-WINDOW> <CURSET 1 1> <HLIGHT ,H-INVERSE> <ERASE 1> <HLIGHT ,H-NORMAL> <SCREEN
|
|
,S-TEXT> <RTRUE>> <GLOBAL OLD-HERE:OBJECT <>> <DEFINE UPDATE-STATUS-LINE () <
|
|
SCREEN ,S-WINDOW> <HLIGHT ,H-INVERSE> <COND (<NOT <EQUAL? ,HERE ,OLD-HERE>> <
|
|
SETG OLD-HERE ,HERE> <CURSET 1 1> <ERASE 1> <CURSET 1 1> <TELL D ,HERE>)> <
|
|
CURSET 1 <- <LOWCORE SCRH> <+ <DIGITS ,SCORE> <DIGITS ,MOVES>>>> <TELL N ,SCORE
|
|
C !\/ N ,MOVES> <HLIGHT ,H-NORMAL> <SCREEN ,S-TEXT> <RTRUE>> <DEFINE DIGITS (N
|
|
"AUX" (D 1)) <COND (<L? .N 0> <SET D <+ 1 .D>> <SET N <- 0 .N>>)> <REPEAT () <
|
|
SET N </ .N 10>> <COND (<0? .N> <RETURN>) (T <SET D <+ 1 .D>>)>> .D>>
|
|
<DEFAULT-DEFINITION READ-INPUT <GLOBAL DEMO-VERSION? <>> <DEFINE READ-INPUT ()
|
|
<TELL ">"> <COND (T <PUTB ,P-INBUF 1 0>)> <COND (,DEMO-VERSION? <READ-DEMO ,
|
|
P-INBUF ,P-LEXV>) (T <ZREAD ,P-INBUF ,P-LEXV>)> <COND (T <SCRIPT-INBUF>)>> <
|
|
DEFINE SCRIPT-INBUF ("AUX" BUF (CNT 0) (N <GETB ,P-INBUF 1>) CHR) <DIROUT ,
|
|
D-SCREEN-OFF> <SET BUF <REST ,P-INBUF>> <REPEAT () <COND (<IGRTR? CNT .N> <
|
|
RETURN>) (ELSE <SET CHR <GETB .BUF .CNT>> <COND (<AND <G=? .CHR !\a> <L=? .CHR
|
|
!\z>> <PRINTC <- .CHR 32>>) (ELSE <PRINTC .CHR>)>)>> <CRLF> <DIROUT ,
|
|
D-SCREEN-ON>>>
|
|
<CONSTANT P-QB-WORDS-1 <PLTABLE <VOC "ARE"> <VOC "CAN"> <VOC "COULD"> <VOC "DO"
|
|
> <VOC "DOES"> <VOC "DID"> <VOC "HE"> <VOC "I"> <VOC "IS"> <VOC "IT"> <VOC
|
|
"SHE"> <VOC "SHOULD"> <VOC "THAT"> <VOC "THEY"> <VOC "WAS"> <VOC "WE"> <VOC
|
|
"WERE"> <VOC "WILL"> <VOC "WOULD"> <VOC "YOU">>>
|
|
<CONSTANT P-QB-WORDS-2 <PLTABLE <VOC "NOT"> <VOC "NOT"> <VOC "NOT"> <VOC "NOT">
|
|
<VOC "NOT"> <VOC "NOT"> <VOC "IS"> <VOC "AM"> <VOC "NOT"> <VOC "IS"> <VOC "IS">
|
|
<VOC "NOT"> <VOC "IS"> <VOC "ARE"> <VOC "NOT"> <VOC "ARE"> <VOC "NOT"> <VOC
|
|
"NOT"> <VOC "NOT"> <VOC "ARE">>>
|
|
<CONSTANT P-QA-WORDS1 <PLTABLE <VOC "AREN"> <VOC "CAN"> <VOC "COULDN"> <VOC
|
|
"DON"> <VOC "DOESN"> <VOC "DIDN"> <VOC "HE"> <VOC "I"> <VOC "ISN"> <VOC "IT"> <
|
|
VOC "SHE"> <VOC "SHOULDN"> <VOC "THAT"> <VOC "THEY"> <VOC "WASN"> <VOC "WE"> <
|
|
VOC "WEREN"> <VOC "WON"> <VOC "WOULDN"> <VOC "YOU">>>
|
|
<CONSTANT P-QA-WORDS2 <PLTABLE <VOC "T"> <VOC "T"> <VOC "T"> <VOC "T"> <VOC "T"
|
|
> <VOC "T"> <VOC "S"> <VOC "M"> <VOC "T"> <VOC "S"> <VOC "S"> <VOC "T"> <VOC
|
|
"S"> <VOC "RE"> <VOC "T"> <VOC "RE"> <VOC "T"> <VOC "T"> <VOC "T"> <VOC "RE">>>
|
|
|
|
<DEFAULT-DEFINITION SPECIAL-CONTRACTION? <DEFINE SPECIAL-CONTRACTION? (PTR) <>>
|
|
>
|
|
<DEFINE-ROUTINE EXPAND-BE-CONTRACTIONS>
|
|
<DEFAULT-DEFINITION TELL-THE <DEFINE TELL-THE (OBJ "AUX" TMP) <COND (<EQUAL? .
|
|
OBJ ,PLAYER> <TELL "you">) (T <COND (<SET TMP <GET-OWNER .OBJ>> <COND (<EQUAL?
|
|
.TMP ,PLAYER> <TELL "your ">) (<NOT <EQUAL? .TMP .OBJ>> <TELL-THE .TMP> <TELL
|
|
"'s ">)>) (<NOT <FSET? .OBJ ,NARTICLEBIT>> <TELL "the ">)> <TELL D .OBJ>)>>>
|
|
<DEFAULT-DEFINITION TELL-CTHE <DEFINE TELL-CTHE (OBJ "AUX" TMP) <COND (<EQUAL?
|
|
.OBJ ,PLAYER> <TELL "You">) (T <COND (<SET TMP <GET-OWNER .OBJ>> <COND (<EQUAL?
|
|
.TMP ,PLAYER> <TELL "Your ">) (<NOT <EQUAL? .TMP .OBJ>> <TELL-CTHE .TMP> <TELL
|
|
"'s ">)>) (<NOT <FSET? .OBJ ,NARTICLEBIT>> <TELL "The ">)> <TELL D .OBJ>)>>>
|
|
<COMPILATION-FLAG-DEFAULT P-ZORK0 <>>
|
|
<COMPILATION-FLAG-DEFAULT P-PS-ADV T>
|
|
<GLOBAL P-DIRECTION:NUMBER 0>
|
|
<COMPILATION-FLAG-DEFAULT P-TITLE-ABBRS <>>
|
|
<DEFAULT-DEFINITION TITLE-ABBR? <DEFMAC TITLE-ABBR? ('WRD) <FORM EQUAL? .WRD ,
|
|
W?MR ,W?MRS ,W?MS>>>
|
|
<DEFINE-ROUTINE NAKED-DIR?>
|
|
<DEFINE-ROUTINE PARSER>
|
|
<DEFAULT-DEFINITION GAME-VERB? <CONSTANT GAME-VERB-TABLE <LTABLE V?BRIEF V?QUIT
|
|
V?RESTART V?RESTORE V?SAVE V?SCORE V?SCRIPT V?SUPER-BRIEF V?TELL V?UNSCRIPT
|
|
V?VERBOSE V?VERSION V?$VERIFY>> <DEFINE GAME-VERB? () <COND (<INTBL? ,PRSA <
|
|
ZREST ,GAME-VERB-TABLE 2> <ZGET ,GAME-VERB-TABLE 0>> <RTRUE>)> <COND (<VERB?
|
|
$RANDOM $COMMAND $RECORD $UNRECORD> <RTRUE>)>>>
|
|
<DEFINE-ROUTINE RED-SD>
|
|
<GDECL (SPLITS) FIX>
|
|
<CONSTANT PARSE-RESULT <MAKE-PARSE-RESULT>>
|
|
<GLOBAL P-WORD-NUMBER:NUMBER 0>
|
|
<GLOBAL P-WORDS-AGAIN:NUMBER 0>
|
|
<GLOBAL P-OLEN:NUMBER 0>
|
|
<DEFINE-ROUTINE PARSE-IT>
|
|
<GLOBAL P-RUNNING:TABLE <>>
|
|
<GLOBAL PARSE-SENTENCE-ACTIVATION <>>
|
|
<DEFINE-ROUTINE PARSE-SENTENCE>
|
|
<DEFINE-ROUTINE GET-TERMINAL-ACTION>
|
|
<DEFINE-ROUTINE GET-NONTERMINAL-ACTION>
|
|
<GLOBAL P-RESPONDED:NUMBER 0>
|
|
<DEFAULT-DEFINITION BE-PATIENT <ROUTINE BE-PATIENT>>
|
|
<DEFINE-ROUTINE MAIN-LOOP>
|
|
<DEFAULT-DEFINITION COLLECTIVE-VERB? <DEFMAC COLLECTIVE-VERB? () '<VERB? COUNT>
|
|
>>
|
|
<DEFAULT-DEFINITION DIR-VERB? <DEFMAC DIR-VERB? () '<VERB? WALK>>>
|
|
<DEFINE-ROUTINE MAIN-LOOP-1>
|
|
<DEFINE-ROUTINE PERF-MANY>
|
|
<DEFINE-ROUTINE TEST-ADJACENT>
|
|
<DEFAULT-DEFINITION QCONTEXT-CHECK <ROUTINE QCONTEXT-CHECK>>
|
|
<GLOBAL LIT:OBJECT <>>
|
|
<DEFAULT-DEFINITION LIT? <ROUTINE LIT?>>
|
|
<DEFINE-ROUTINE IGNORE-FIRST-WORD>
|
|
<DEFINE-ROUTINE FIX-QUOTATIONS>
|
|
<DEFINE-ROUTINE MAIN-LOOP-IT>
|
|
<DEFAULT-DEFINITION P-NO-MEM-ROUTINE <ROUTINE P-NO-MEM-ROUTINE>>
|
|
<DEFAULT-DEFINITION BEG-PARDON <ROUTINE BEG-PARDON>>
|
|
<DEFAULT-DEFINITION UNKNOWN-WORD <ROUTINE UNKNOWN-WORD>>
|
|
<DEFINE-ROUTINE WORD-PRINT>
|
|
<DEFMAC PRINT-VOCAB-WORD ('WD) <FORM PRINTB .WD>>
|
|
<DEFINE-ROUTINE DO-OOPS>
|
|
<DEFINE-ROUTINE DO-AGAIN>
|
|
<DEFINE-ROUTINE NP-SAVE>
|
|
<DEFINE-ROUTINE PARSER-ERROR>
|
|
<DEFAULT-DEFINITION BUZZER-WORD? <IFN-P-BE-VERB <CONSTANT P-W-WORDS <PLTABLE <
|
|
VOC "WHAT"> <IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "WHAT'S">> <VOC "WHEN"> <
|
|
IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "WHEN'S">> <VOC "WHERE"> <
|
|
IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "WHERE'S">> <VOC "WHO"> <
|
|
IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "WHO'S">> <VOC "WHY"> <
|
|
IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "WHY'S">> <VOC "HOW"> <
|
|
IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "HOW'S">> <VOC "WOULD"> <
|
|
IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "WOULDN'T">> <VOC "COULD"> <
|
|
IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "COULDN'T">> <VOC "SHOULD"> <
|
|
IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "SHOULDN'T">>>>> <IFN-P-BE-VERB <IFFLAG (
|
|
P-APOSTROPHE-BREAKS-WORDS <CONSTANT P-Q-WORDS1 <PLTABLE <IFN-P-BE-VERB <VOC
|
|
"AREN">> <IFN-P-BE-VERB <VOC "CAN">> <IFN-P-BE-VERB <VOC "COULDN">> <
|
|
IFN-P-BE-VERB <VOC "DIDN">> <IFN-P-BE-VERB <VOC "DOESN">> <IFN-P-BE-VERB <VOC
|
|
"DON">> <VOC "HASN"> <VOC "HAVEN"> <IFN-P-BE-VERB <VOC "HE">> <VOC "I"> <VOC
|
|
"I"> <IFN-P-BE-VERB <VOC "I">> <VOC "I"> <IFN-P-BE-VERB <VOC "ISN">> <
|
|
IFN-P-BE-VERB <VOC "IT">> <VOC "LET"> <IFN-P-BE-VERB <VOC "SHE">> <
|
|
IFN-P-BE-VERB <VOC "SHOULDN">> <IFN-P-BE-VERB <VOC "THAT">> <IFN-P-BE-VERB <VOC
|
|
"THEY">> <IFN-P-BE-VERB <VOC "WASN">> <IFN-P-BE-VERB <VOC "WE">> <VOC "WE"> <
|
|
IFN-P-BE-VERB <VOC "WEREN">> <IFN-P-BE-VERB <VOC "WON">> <IFN-P-BE-VERB <VOC
|
|
"WOULDN">> <IFN-P-BE-VERB <VOC "YOU">>>> <CONSTANT P-Q-WORDS2 <PLTABLE <
|
|
IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <VOC "T">> <
|
|
IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <VOC "T">> <
|
|
VOC "T"> <VOC "T"> <IFN-P-BE-VERB <VOC "S">> <VOC "D"> <VOC "LL"> <
|
|
IFN-P-BE-VERB <VOC "M">> <VOC "VE"> <IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <
|
|
VOC "S">> <VOC "S"> <IFN-P-BE-VERB <VOC "S">> <IFN-P-BE-VERB <VOC "T">> <
|
|
IFN-P-BE-VERB <VOC "S">> <IFN-P-BE-VERB <VOC "RE">> <IFN-P-BE-VERB <VOC "T">> <
|
|
IFN-P-BE-VERB <VOC "RE">> <VOC "LL"> <IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <
|
|
VOC "T">> <IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <VOC "RE">>>>) (T <CONSTANT
|
|
P-Q-WORDS1 <PLTABLE <IFN-P-BE-VERB <VOC "AREN'T">> <IFN-P-BE-VERB <VOC "CAN'T">
|
|
> <IFN-P-BE-VERB <VOC "COULDN'T">> <IFN-P-BE-VERB <VOC "DIDN'T">> <
|
|
IFN-P-BE-VERB <VOC "DOESN'T">> <IFN-P-BE-VERB <VOC "DON'T">> <VOC "HASN'T"> <
|
|
VOC "HAVEN'T"> <IFN-P-BE-VERB <VOC "HE'S">> <VOC "I'D"> <VOC "I'LL"> <
|
|
IFN-P-BE-VERB <VOC "I'M">> <VOC "I'VE"> <IFN-P-BE-VERB <VOC "ISN'T">> <
|
|
IFN-P-BE-VERB <VOC "IT'S">> <VOC "LET'S"> <IFN-P-BE-VERB <VOC "SHE'S">> <
|
|
IFN-P-BE-VERB <VOC "SHOULDN'T">> <IFN-P-BE-VERB <VOC "THAT'S">> <IFN-P-BE-VERB
|
|
<VOC "THEY'RE">> <IFN-P-BE-VERB <VOC "WASN'T">> <IFN-P-BE-VERB <VOC "WE'RE">> <
|
|
VOC "WE'LL"> <IFN-P-BE-VERB <VOC "WEREN'T">> <IFN-P-BE-VERB <VOC "WON'T">> <
|
|
IFN-P-BE-VERB <VOC "WOULDN'T">> <IFN-P-BE-VERB <VOC "YOU'RE">>>>)> <CONSTANT
|
|
P-Q-WORDS <PLTABLE <IFN-P-BE-VERB <VOC "AM">> <IFN-P-BE-VERB <VOC "ARE">> <
|
|
IFN-P-BE-VERB <VOC "CAN">> <IFN-P-BE-VERB <VOC "COULD">> <IFN-P-BE-VERB <VOC
|
|
"DID">> <IFN-P-BE-VERB <VOC "DO">> <VOC "HAS"> <VOC "HAVE"> <IFN-P-BE-VERB <VOC
|
|
"IS">> <VOC "LIKE"> <IFN-P-BE-VERB <VOC "SHOULD">> <VOC "WANT"> <IFN-P-BE-VERB
|
|
<VOC "WAS">> <IFN-P-BE-VERB <VOC "WERE">> <IFN-P-BE-VERB <VOC "WILL">> <
|
|
IFN-P-BE-VERB <VOC "WOULD">>>>> <CONSTANT P-N-WORDS <PLTABLE <VOC "ZERO"> <VOC
|
|
"TEN"> <VOC "ELEVEN"> <VOC "TWELVE"> <VOC "THIRTEEN"> <VOC "FOURTEEN"> <VOC
|
|
"FIFTEEN"> <VOC "SIXTEEN"> <VOC "SEVENTEEN"> <VOC "EIGHTEEN"> <VOC "NINETEEN">
|
|
<VOC "TWENTY"> <VOC "THIRTY"> <VOC "FORTY"> <VOC "FIFTY"> <VOC "SIXTY"> <VOC
|
|
"SEVENTY"> <VOC "EIGHTY"> <VOC "NINETY"> <VOC "HUNDRED"> <VOC "THOUSAND"> <VOC
|
|
"MILLION"> <VOC "BILLION">>> <CONSTANT P-C-WORDS <PLTABLE <VOC "ASS"> <VOC
|
|
"ASSHOLE"> <VOC "BASTARD"> <VOC "BITCH"> <VOC "COCK"> <VOC "COCKSUCKER"> <VOC
|
|
"CRAP"> <VOC "CUNT"> <VOC "CUSS"> <VOC "DAMN"> <VOC "DAMNED"> <VOC "FUCK"> <VOC
|
|
"FUCKED"> <VOC "FUCKER"> <VOC "FUCKING"> <VOC "GODDAMN"> <VOC "GODDAMNED"> <VOC
|
|
"HELL"> <VOC "PISS"> <VOC "SCREW"> <VOC "SHIT"> <VOC "SHITHEAD"> <VOC "SUCKS">>
|
|
> <DEFINE BUZZER-WORD? (WD PTR "AUX" N) <IFN-P-BE-VERB <SETG P-ERRS <+ 3 ,
|
|
P-ERRS>> <COND (<EQUAL? .WD ,W?\(SOMETHI ,W?SOMETHING> <TELL
|
|
"[Type a real word instead of" ,P-SOMETHING> <RTRUE>) (<INTBL? .WD <ZREST ,
|
|
P-W-WORDS 2> <ZGET ,P-W-WORDS 0>> <W-WORD-REPLY .WD> <RTRUE>) (<OR <INTBL? .WD
|
|
<ZREST ,P-Q-WORDS 2> <ZGET ,P-Q-WORDS 0>> <IFFLAG (P-APOSTROPHE-BREAKS-WORDS <
|
|
AND <SET N <INTBL? .WD <ZREST ,P-Q-WORDS1 2> <ZGET ,P-Q-WORDS1 0>>> <EQUAL? <
|
|
ZGET .PTR ,P-LEXELEN> ,W?APOSTROPHE> <EQUAL? <ZGET ,P-Q-WORDS2 <- .N ,
|
|
P-Q-WORDS1>> <ZGET .PTR <* 2 ,P-LEXELEN>>>>) (T <INTBL? .WD <ZREST ,P-Q-WORDS1
|
|
2> <ZGET ,P-Q-WORDS1 0>>)>> <TELL-PLEASE-USE-COMMANDS> <RTRUE>)>> <COND (<
|
|
INTBL? .WD <ZREST ,P-N-WORDS 2> <ZGET ,P-N-WORDS 0>> <TELL
|
|
"[Use numerals for numbers, for example \"10.\"]" CR> <RTRUE>) (<INTBL? .WD <
|
|
ZREST ,P-C-WORDS 2> <ZGET ,P-C-WORDS 0>> <TELL !\[ <PICK-ONE ,OFFENDED> "]" CR>
|
|
<RTRUE>) (T <RFALSE>)>> <CONSTANT OFFENDED <LTABLE 0 "What charming language!"
|
|
"Computers aren't impressed by naughty words!"
|
|
"You ought to be ashamed of yourself!"
|
|
"Hey, save that talk for the locker room!" "Step outside and say that!"
|
|
"And so's your old man!">> <IFN-P-BE-VERB <DEFINE W-WORD-REPLY (WD) <COND (<OR
|
|
<NOT <EQUAL? .WD ,W?WHAT ,W?WHO>> <NOT <EQUAL? ,WINNER ,PLAYER>>> <COND (<
|
|
EQUAL? .WD ,W?WHERE> <TO-DO-X-USE-Y "locate" "FIND"> <RTRUE>) (T <TO-DO-X-USE-Y
|
|
"ask about" "TELL ME ABOUT"> <RTRUE>)>) (T <TELL "[Maybe you could "> <COND (<
|
|
FSET? ,LIBRARY ,TOUCHBIT> <TELL "look that up in the">) (T <TELL "find an">)> <
|
|
TELL " encyclopedia.]" CR>)>> <DEFINE TO-DO-X-USE-Y (STR1 STR2) <TELL "[To " .
|
|
STR1 " something, use the command: " .STR2 ,P-SOMETHING> <RTRUE>> <CONSTANT
|
|
P-SOMETHING " (something).]|"> <VOC "(SOMETHI"> <VOC "SOMETHING"> <DEFINE
|
|
TELL-PLEASE-USE-COMMANDS ("AUX" (THRESH <COND (<FSET? ,GREAT-HALL ,TOUCHBIT> 10
|
|
) (T 2)>)) <TELL "["> <COND (<L? ,P-ERRS .THRESH> <PRINT "Please use commands">
|
|
<TELL ", not statements or questions"> <PRINTR ".]">) (T <TELL-SAMPLE-COMMANDS>
|
|
)>>>>
|
|
<DEFAULT-DEFINITION NUMBER? <ADD-WORD "INT.NUM" ADJ> <ADD-WORD "INT.NUM" NOUN>
|
|
<ADD-WORD "INT.TIM" ADJ> <ADD-WORD "INT.TIM" NOUN> <ROUTINE NUMBER?>>
|
|
<DEFINE-ROUTINE CHANGE-LEXV>
|
|
<CONSTANT GWIM-MSG <TABLE 0 0 0 0>>
|
|
<DEFAULT-DEFINITION TELL-GWIM-MSG <ROUTINE TELL-GWIM-MSG>>
|
|
<END-SEGMENT>
|
|
<ENDPACKAGE> |