AGS.CScript.Compiler.CodeBlockCompiler.GenerateCodeForStandardOperator C# (CSharp) Method

GenerateCodeForStandardOperator() private method

private GenerateCodeForStandardOperator ( AGS.CScript.Compiler.SplitExpression expression ) : void
expression AGS.CScript.Compiler.SplitExpression
return void
        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
        }