1 line
5.2 KiB
Plaintext
1 line
5.2 KiB
Plaintext
|
"GRAM file: imitates old parser and worth an ounce of cure.
Copyright (C) 1988 Infocom, Inc. All rights reserved."
<USE "LALR" "PSTACK" "REDS">
<IFFLAG (IN-ZILCH
<USE "ZILCH">)
(T <USE "ZIL">)>
<INCLUDE "SYMBOLS" "BASEDEFS" "LALRDEFS">
"TERMINALS are defined in DEFS, so they'll be around for compiling
stuff. This resets everything else, so we can regenerate the grammar."
<RESET-SYMBOLS ;"!-SYMBOLS!-PACKAGE">
<ADD-WORD END.OF.INPUT END-OF-INPUT>
<ADD-WORD "." END-OF-INPUT>
<ADD-WORD "?" END-OF-INPUT>
<ADD-WORD "!" END-OF-INPUT>
<ADD-WORD "THEN" END-OF-INPUT>
<ADD-WORD ONE NOUN>
<ADD-WORD BUT PREP>
;<ADD-WORD NOT PREP>
<ADD-WORD EXCEPT PREP>
<COMPILATION-FLAG-DEFAULT P-PS-COMMA <>>
<ADD-WORD AND <IFFLAG (P-PS-COMMA COMMA) (T MISCWORD)>>
;<ADD-WORD OR <IFFLAG (P-PS-COMMA COMMA) (T MISCWORD)>>
<ADD-WORD "," <IFFLAG (P-PS-COMMA COMMA) (T MISCWORD)>>
<COMPILATION-FLAG-DEFAULT P-PS-APOSTR <>>
<ADD-WORD "'" <IFFLAG (P-PS-APOSTR APOSTR) (T MISCWORD)>>
<COMPILATION-FLAG-DEFAULT P-PS-OFWORD <>>
<ADD-WORD OF <IFFLAG (P-PS-OFWORD OFWORD) (T MISCWORD ;PREP)>>
<COMPILATION-FLAG-DEFAULT P-PS-THEWORD <>>
<ADD-WORD THE <IFFLAG (P-PS-THEWORD ARTICLE) (T MISCWORD)>>
<ADD-WORD FROM PREP>
<ADD-WORD IN PREP>
<ADD-WORD ON PREP>
<IF-P-PS-ADV
<ADD-WORD ONCE ADV>
<ADD-WORD TWICE ADV>
<ADD-WORD THRICE ADV>
<ADD-WORD "DON'T" ADV>>
<IFFLAG (P-PS-ADV <PRODUCTION RED-SP SP 1 (?PERS S ?ADV)>)
(T <PRODUCTION RED-SP SP 1 (?PERS S)>)>
<PRODUCTION RED-SV S 2 (VP ?PARTICLE)>
<PRODUCTION RED-SVPNN S 2 (VP ?PARTICLE NPP NPP)>
<PRODUCTION RED-SVNPN S 2 (VP NPP ?PARTICLE NPP)>
<PRODUCTION RED-SVPNPN S 2 (VP ?PARTICLE NPP ?PARTICLE NPP)>
<PRODUCTION RED-SVNP S 2 (VP NPP PARTICLE)>
<PRODUCTION RED-SVN S 2 (VP ?PARTICLE NPP)>
<PRODUCTION RED-SD S 2 (DIR)>
<PRODUCTION RED-SVD S 2 (VP DIR)>
<IFFLAG (P-BE-VERB
<IFFLAG (P-PS-ADV
<PRODUCTION RED-VP VP 3 (?CANDO ?ADV VERB ?ADV)>)
(T
<PRODUCTION RED-VP VP 3 (?CANDO VERB)>)>
<PRODUCTION RED-CANDO ?CANDO 3 ()
(NP)
(NP CANDO ?NOT) ;"I DON'T KNOW"
(?QW1 CANDO NP ?NOT)
(?QW1 CANDO NOT NP)>)
(T
<IFFLAG (P-PS-ADV
<PRODUCTION RED-VP VP 3 (?ADV VERB ?ADV)>)
(T
<PRODUCTION RED-VP VP 3 (VERB)>)>)>
<IFFLAG (P-PS-OFWORD
<PRODUCTION RED-PART ?PARTICLE 1 (PARTICLE OFWORD)
(PARTICLE ?PARTICLE)
()>)
(T
<PRODUCTION RED-PART ?PARTICLE 1 (PARTICLE MISCWORD ;"OF")
(PARTICLE ?PARTICLE)
()>)>
<IF-P-PS-ADV <PRODUCTION RED-FCN ?ADV 1 (ADV) ()>>
<IFFLAG (P-PS-COMMA
<PRODUCTION RED-NPP NPP 4 (NPP COMMA NP)
(NPP PP)
(NP)>)
(T
<PRODUCTION RED-NPP NPP 4 (NPP MISCWORD NP)
(NPP PP)
(NP)>)>
<COMPILATION-FLAG-DEFAULT P-PS-QUOTE <>>
<ADD-WORD \" <IFFLAG (P-PS-QUOTE QUOTE) (T MISCWORD)>>
<IFFLAG (P-PS-QUOTE
<PRODUCTION RED-QUOTE NP 7 (QUOTE)>)
(T
<PRODUCTION RED-QUOTE NP 7 (MISCWORD)>)>
<IFFLAG (P-PS-OFWORD <PRODUCTION RED-OF NP 5 (NP OFWORD NP)>)
(T <PRODUCTION RED-OF NP 5 (NP MISCWORD NP)>)>
<PRODUCTION RED-QT NP 7 (QUANT)>
<PRODUCTION RED-QN NP 5 (QUANT NP)>
<PRODUCTION RED-NP NP 6 (;?DET ADJ* NOUN)>
<IFFLAG (P-PS-OFWORD
<PRODUCTION RED-PP PP 3 (PREP NPP)
(PARTICLE NPP)
(PREP OFWORD NPP)
(PARTICLE OFWORD NPP)>)
(T
<PRODUCTION RED-PP PP 3 (PREP NPP)
(PARTICLE NPP)
(PREP MISCWORD;"OF" NPP)
(PARTICLE MISCWORD;"OF" NPP)>)>
<IFFLAG (P-PS-THEWORD
<PRODUCTION RED-ADJ ADJ* 8 (POSSESSIVE ADJ*)
()
(ADJ ADJ*) ;"switched by SWG"
(ARTICLE ADJ*)>)
(T
<PRODUCTION RED-ADJ ADJ* 8 (POSSESSIVE ADJ*)
()
(ADJ ADJ*) ;"switched by SWG"
(MISCWORD ADJ*) ;"article">)>
<IFFLAG (P-PS-APOSTR
<PRODUCTION RED-POSS POSSESSIVE 8 (NP APOSTR MISCWORD) ;"FOO'S"
;(ADJ) ;"HER HIS etc.">)
(T
<PRODUCTION RED-POSS POSSESSIVE 8 (NP MISCWORD MISCWORD) ;"FOO'S"
;(ADJ) ;"HER HIS etc.">)>
<IF-P-BE-VERB
<PRODUCTION RED-BE-FORM BE-FORM 3 (TOBE)>
<PRODUCTION RED-SNBN S 2 (NP BE-FORM ?NOT ?BE NPP)>
<PRODUCTION RED-SNBA S 2 (NP BE-FORM ?NOT ?BE ADJ)>
<PRODUCTION RED-SNBP S 2 (NP BE-FORM ?NOT ?BE PP)>
<PRODUCTION RED-SNBAP S 2 (NP BE-FORM ?NOT ?BE AD
|