ExpressionStatement :
[lookahead !e { {, function }] Expression ;
An ExpressionStatement may not start with an opening curly brace or function because that may make it ambiguous with Block and FunctionDeclaration respectfully.
function evaluate(Expression) {
var exprRef = evaluate(Expression);
return Completion('normal', GetValue(exprRef), undefined);
}