The NounVerbAdjective script is probably your best place to start for this. It can already parse phrases like "Does Jane run fast".
If you want to perform a multi-pass parser, you can have two or more cases in your root state, i.e.
case :input goto State:posState for each #word of :sentence;
case :input goto State:understandState for each #word of :sentence;
The posState could process, but only tag the input (i.e. do (associate :input to :subject by #subject), or maybe on the :sentence, :input is specific to this context, :sentence is persistent). Then your understandState could use this information in its parsing. To get the posState to return just use "return" or just have no quotient, then it will evaluate the next state.