So, I've figured out how to handle the grammar/parsing conversion. It's interesting: the way that Inform & the Sierra interpreter parse is in a very similar fashion. The only difference that I can see (on the surface) is that Sierra's interpreter allows for a maximum of 3 parts, whereas the Inform let's you use as many parts as you want; each command is ultimately broken into a maximum of 3 pieces, however it let's you 'chain' multiple commands together.
Here is an example of a grammar segment in pseudo-inform:
Verb 'attack' 'fight' 'hit' 'hurt' 'injure'
* animate(in_room,on_ground) 'with'/'using'/'thru'/'through' weapon(held,carried,have) -> Attack
This can be easily rewritten as:
(if(Said('(attack,fight,hit,hurt,injure)<(with,using,thru,through)/*/*'))
AttackSub()
)
The only difference is Inform's ability to use attributes of objects as part of the parse (animate, weapon) - but typically these are also handled in 'preactions' or at the beginning of the action (in this case, 'Attack' is the action being called).
The way that the Inform language names the three parts are 'verb', 'noun' and 'second' (in that order). The same names apply equally well in SCI as well - in fact I think it assists in understanding just what should go in each section of a Said()