Section C - Hacky Disambiguation
Include (-
[ PrintInferredCommand from singleton_noun; ! Nothing changed here.
singleton_noun = FALSE;
if ((from ~= 0) && (from == pcount-1) &&
(pattern-->from > 1) && (pattern-->from < REPARSE_CODE))
singleton_noun = TRUE;
if (singleton_noun) {
BeginActivity(CLARIFYING_PARSERS_CHOICE_ACT, pattern-->from);
if (ForActivity(CLARIFYING_PARSERS_CHOICE_ACT, pattern-->from) == 0) {
print "("; PrintCommand(from); print ")^";
}
EndActivity(CLARIFYING_PARSERS_CHOICE_ACT, pattern-->from);
} else {
print "("; PrintCommand(from); print ")^";
}
];
[ PrintCommand from i k spacing_flag spell_flag; ! One slight change here.
if (from == 0) {
i = verb_word;
if (LanguageVerb(i) == 0){
spell_flag = PrintVerb(i);
if (spell_flag == 0) print (address) i;
}
from++; spacing_flag = true;
}
for (k=from : k<pcount : k++) {
i = pattern-->k;
if (i == PATTERN_NULL) continue;
if (spacing_flag) print (char) ' ';
if (i == 0) { PARSER_CLARIF_INTERNAL_RM('F'); jump TokenPrinted; }
if (i == 1) {
if (spell_flag == 0)
PARSER_CLARIF_INTERNAL_RM('G'); ! "that"
else
print "that spell at"; ! custom (changed) message
jump TokenPrinted;
}
if (i >= REPARSE_CODE)
print (address) VM_NumberToDictionaryAddress(i-REPARSE_CODE);
else
if (i ofclass K3_direction)
print (LanguageDirection) i; ! the direction name as adverb
else
print (the) i;
.TokenPrinted;
spacing_flag = true;
}
];
-) instead of "Print Command" in "Parser.i6t".
Include (-
{-log:Compiling I6 Verb directives}
{-call:PL::Parsing::Verbs::compile_all}
{-log:Compiling noun and scope filter tokens}
{-call:PL::Parsing::Tokens::Filters::compile}
[ UnknownVerb; verb_wordnum = 0; return 'no.verb'; ];
[ PrintVerb v;
if (v == 'no.verb') { print "cast"; rtrue; } ! This line was changed, since casting is the only in-universe action which can happen with no verb.
rfalse;
];
-) instead of "Grammar" in "Output.i6t".