The term you want is 'natural language processing', or NLP. However, bear in mind that formal methods are designed to try and understand real world texts, whereas you only usually need something that works for a limited subset of your natural language.
Typically you can start out with a simple grammar and vocabulary, then write a parser for it. A grammar might be something simple like this:
sentence = verb [preposition] object
verb = "get" | "go" | "look" | "examine"
preposition = "above" | "below"
object = ["the"] [adjective] noun
adjective = "big" | "green"
noun = "north" | "south" | "east" | "west" | "house" | "dog"
The above is a variant on Backus-Naur form, the standard way of representing grammars. Anyway, you can use a parser generator to generate code to parse this grammar, or write your own fairly easily if your language has decent string handling. (Look up 'recursive descent parsers', which use one function for each line of the grammar.)
Once parsed, you can work out if the sentence makes sense - "go north" may make sense, but "get the green north" does not. You can solve this in 2 ways; make the grammar more formal (eg. have different types of verbs only valid with certain types of noun) or check the nouns against the verb afterwards. The first way can help you to give out better error messages to the player, but you always need to do the second to some degree anyway, as you always need to check context - eg. "take the green key" is grammatically correct and syntactically correct, but you still need to check that the green key is present.
Eventually your program ends up with a validated command with all the various parts checked; then it's just a case of calling the right function with the arguments to perform the action.