In “Suspended”, the only game I know of which uses something like this, the implementation seems to be something like this:
- Does the command match “both [actor1] and [actor2], [verb] [noun]”?
- Is the verb “move”? (verbs other than “move” get an error from the FCs)
- Is the noun the one object in the game for which this syntax works? (nouns other than that one get an error from the FCs)
- Can actor1 see noun?
- Set a flag, then have actor2 try to move the noun.
This leads to some odd glitches, such as “BOTH SENSA AND SENSA, MOVE IT” being accepted (it never checks whether actor1 and actor2 are the same). And since the action is only carried out once, it doesn’t really make sense except for the one time in the game this syntax is needed. (If I were designing it, I would have simply disallowed taking things from the cabinet unless Sensa is “holding” the flowswitch in place, thus requiring two robots without introducing awkward new syntax.)
About parsing it once verses parsing it multiple times: I suppose it really comes down to what behavior you want for ambiguous commands. In a game with lots of timed sequences it might be fairer to only parse once, so that a clever player can’t “cheat” by causing multiple disparate actions on the same turn. But in a game where the actors can be in different rooms, parsing only once could lead to a lot of “can’t reach into…” errors.