Nuances of noun parsing

This is a question related to the other one about dice (see [url]https://intfiction.org/t/some-questions-about-dice/9251/1]), but I think it’s more general.

The code I have for that does almost everything I want, but there is a slight hitch when specifying a number not found on any die:

Actually providing an answer to the disambiguation question results in the error:

so I’m guessing that means it’s trying to disambiguate just “die” then failing on the resulting modified command (">GET DIE YELLOW SHOWING 99"?)

Two questions:

  1. Why isn’t a not-understood error triggered for “dice showing 99”?

  2. Is there a way I can change my I6 parsing function to prevent an attempt to disambiguate the “die” part of “die showing 99”? Maybe by making the die kind privately named then try to parse just plain “die” in my own function?

For quick reference, the relevant part of the code from the other post is:

[code]Include (-
[ ParseDieByFace j;
j = NextWord();
if (j ~= ‘die’ or ‘dice’)
return GPR_FAIL;
if (j == ‘dice’)
parser_action = ##PluralFound;
if (NextWord() ~= ’showing’)
return GPR_FAIL;
if (ParseToken(ELEMENTARY_TT, NUMBER_TOKEN) ~= GPR_NUMBER)
return GPR_FAIL;
if (~~(self ofclass (+ die +) && self.(+ current face +) == parsed_number))
return GPR_FAIL;
return 3;
];
-)

The Understand token dice by face translates into I6 as “ParseDieByFace”.

Understand “[dice by face]” as a die.[/code]

… where a die is a kind of thing with plural “dice” and a number property called current face.