private void GenerateCodeForStandardOperator(SplitExpression expression)
{
OperatorToken theOperator = expression.Operator as OperatorToken;
if (theOperator == null)
{
throw new CompilerMessage(ErrorCode.InternalError, "ProcessStandardOperator called without OperatorToken");
}
if (expression.RightHandSide.Count < 1)
{
throw new CompilerMessage(ErrorCode.OperatorExpectsRightHandSide, "Expected expression after '" + expression.Operator.Name + "'");
}
if (expression.LeftHandSide.Count < 1)
{
if (theOperator.HasLeftHandSide == RequiredState.Required)
{
throw new CompilerMessage(ErrorCode.OperatorExpectsLeftHandSide, "Expected expression before '" + expression.Operator.Name + "'");
}
}
else if (theOperator.HasLeftHandSide == RequiredState.NotAllowed)
{
throw new CompilerMessage(ErrorCode.OperatorDoesNotExpectLeftHandSide, "Unexpected expression before '" + expression.Operator.Name + "'");
}
else
{
GenerateCodeForExpression(expression.LeftHandSide);
}
GenerateCodeForExpression(expression.RightHandSide);
// TODO: Apply operator
}