First is (understand $Words as $Action). This is a more versatile way to do parsing, and it used to be the only way before the (grammar $ for $) system was introduced—in fact, one of the built-in rules for (understand $ as $) consults the (grammar $ for $) table, so everything comes back to understand in the end.
Second, though, this particular use case is built into Dialog! If you include the rule (default actions enabled) somewhere in your game, Dialog will understand a noun on its own as executing the “default action” on that object—normally, examining.
In other words, if the player’s input matches one or more objects (but not ALL), and there’s no implicit action pending (“What do you want to attack the sphinx with?”), then it looks up the default action for that object, and returns that as the result of parsing.