1. A method comprising: receiving a parse tree representing program source code by a processor of a software development computer, the program source code comprising at least one enclosing expression, the enclosing expression enclosing at least one enclosed expression; assigning a type associated with the enclosing expression to the at least one enclosed expression by: evaluating the at least one enclosing expression of the parse tree for applicability of contextual typing by: comparing the at least one enclosing expression of the parse tree with a set of templates; selecting a template from the set of templates, the selected template matching the at least one enclosing expression, the selected template associated with a process for assigning a type to the at least one enclosed expression; and assigning a type to the at least one enclosed expression by performing the process for assigning type to the at least one enclosed expression associated with the selected template in a top down direction; and providing type information for the at least one enclosed expression whose type is inferred from the type of an expression that encloses the enclosed expression on a display device.