This topic is for discussions related to Scope Control by Ron Newcomb
Looking at the description of this extension in the public library, it says
This extension allows four conditions that can be attached to rules in the Deciding the Scope of Something activity. They are:
while parsing the nouns
while parsing for persuasion
while looping over scope
while testing scope
There’s no description of what these terms mean, though.
I assume ‘parsing the nouns’ means the thing in question can be excluded from the parsing-of-words stage.
Persuasion – at least I know what it’s about, but I never use it, and I don’t know exactly when this clause would apply (but that doesn’t worry me, because I never use it.)
As for the last two, looping and testing, I’m curious if these could help me in general. I’m saying this from a point of view of making scope tests more precise when possible, and in turn maybe less processing-intensive. I’m not saying I’ve got a particular scope problem I’m trying to solve.
I found a reference to ‘looping over scope’ in “Inform Complete Docs 5Z71”, which spotlight turned up on my hard drive, but it was too low level/thick for me to know what it was about.
When do these scope conditions apply?
Looking at Appendix B (for an older version of Inform, I think), this is my guess:
“while parsing for persuasion” applies while the parser is trying to parse the part of the command before the comma to see whether it refers to a person who can be addressed. This is why, in the example in the documentation, adding Jesse to scope while parsing for persuasion allows “Jesse, look” to be understood but not “x Jesse.”
“while parsing the nouns” applies while the parser is trying to part the rest of the command. So if you added Jesse to scope while parsing the nouns, you’d be able to understand “x Jesse” but not “Jesse, look.”
while looping over scope and while testing for scope happen during internal things like visibility/touchability checks, checks for whether there’s light, and the “scope” testing command, which I hadn’t even known existed before I started looking into this, and probably shouldn’t be messed with unless you know what you’re doing.
EDIT: looking at what you’re saying again, maybe that is what you’re interested in? But it seems like you’d have to know the I6 to figure it out for real.
(The numbers in the extension correspond to constants PARSING_REASON, TALKING_REASON, TESTSCOPE_REASON, and LOOPOVERSCOPE_REASON, so you can search through Appendix B or the I6 templates for these to see where they’re invoked. The last two happen when the scope routines get called from TestScope and LoopOverScope, I think, so you can also search for those to see where they come up.)
Thanks a lot, Matt. These are good pointers.