Expressions in the Icon programming language may be conditional, possibly producing no result, or they may be generators, possibly producing a sequence of results. Generators, coupled with a goaldirected evaluation mechanism, provide a concise method for expressing many complex computations. This paper describes the evaluation of expressions in Icon and presents an Icon program that explicates the semantics of expression evaluation. This program also provides an executable "formalism" that can be used as a tool to design and test changes and additions to the language.