internal object EvaluateStatement(Statement statement, CodeContext codeContext, ExpressionParseType parseType)
{
if (statement is VariableDeclarationStatement)
{
VariableDeclarationStatement vds = statement as VariableDeclarationStatement;
var astType = vds.Type;
Type type = TypeManager.GetTypeFromString(astType.GetText());
var variables = vds.Variables;
string addedVariable = null;
foreach (var variable in variables)
{
// right now we only support one declaration per line, will need to
// expand this later
addedVariable = variable.Name;
codeContext.VariableStack.Last().Add(addedVariable, null);
break;
}
if (parseType == ExpressionParseType.Evaluate)
{
return null; // hasn't been assigned yet
}
else
{
StackVariableReference svr = new StackVariableReference();
int index;
codeContext.GetVariableInformation(addedVariable, out index);
svr.StackIndex = index;
svr.VariableName = addedVariable;
svr.TypeOfReference = type;
return svr;
}
}
else
{
return null;
}
}