14 Program

2010-05-24

Program :
SourceElements(opt)

SourceElements :
SourceElement
SourceElements SourceElement

SourceElement :
Statement
FunctionDeclaration

Code: (Meta Ecma)
function evaluate(SourceElements(opt)) {
var strict = HasUseStrict(GetDirectivePrologue(SourceElements)) || 10.1.1 applies; // yeah, um. see also 14.1
if (!SourceElements) return Completion('normal', undefined, undefined);
var progCxt = InitGlobalExecutionContext(SourceElements);
var result = evaluate(SourceElements);
global.arrExecutionContexts.pop();
return result;
}


Code: (Meta Ecma)
function evaluate(SourceElements SourceElement) {
var headResult = evaluate(SourceElements);
if (headResult.isAbrubt()) return headResult;
var tailResult = evaluate(SourceElement);
if (tailResult.value == undefined) var V = headResult.value; // things could go wrong here without an "empty" value
else var V = tailResult.value;
return Completion(tailResult.type, V, tailResult.target);
}


Code: (Meta Ecma)
function evaluate(Statement) {
return evaluate(Statement);
}


Code: (Meta Ecma)
function evaluate(FunctionDeclaration) {
return Completion('normal', undefined, undefined);
}