AGS.Plugin.Lua.LuaCodeDom.LuaExpression.Create C# (CSharp) Method

Create() public static method

public static Create ( SPAGS agsExpr ) : LuaExpression
agsExpr SPAGS
return LuaExpression
        public static LuaExpression Create(SPAGS.Expression agsExpr)
        {
            switch (agsExpr.Type)
            {
                case SPAGS.ExpressionType.AllocateArray:
                    break;
                case SPAGS.ExpressionType.AllocStringBuffer:
                    break;
                case SPAGS.ExpressionType.AllocStruct:
                    break;
                case SPAGS.ExpressionType.ArrayIndex:
                    break;
                case SPAGS.ExpressionType.Attribute:
                    break;
                case SPAGS.ExpressionType.BinaryOperator:
                    SPAGS.Expression.BinaryOperator binop = (SPAGS.Expression.BinaryOperator)agsExpr;
                    LuaExpression left = LuaExpression.Create(binop.Left);
                    LuaExpression right = LuaExpression.Create(binop.Right);
                    LuaBinaryOperatorType binopType;
                    switch (binop.Token.Type)
                    {
                        case SPAGS.TokenType.Add:
                            binopType = LuaBinaryOperatorType.Add;
                            break;
                        case SPAGS.TokenType.BitwiseAnd:
                            return LuaBitLibrary.Bit_BAnd.MakeCall(left, right);
                        case SPAGS.TokenType.BitwiseLeftShift:
                            return LuaBitLibrary.Bit_LShift.MakeCall(left, right);
                        case SPAGS.TokenType.BitwiseOr:
                            return LuaBitLibrary.Bit_BOr.MakeCall(left, right);
                        case SPAGS.TokenType.BitwiseRightShift:
                            return LuaBitLibrary.Bit_RShift.MakeCall(left, right);
                        case SPAGS.TokenType.BitwiseXor:
                            return LuaBitLibrary.Bit_BXor.MakeCall(left, right);
                        case SPAGS.TokenType.Divide:
                            binopType = LuaBinaryOperatorType.Divide;
                            break;
                        case SPAGS.TokenType.IsEqualTo:
                            binopType = LuaBinaryOperatorType.IsEqualTo;
                            break;
                        case SPAGS.TokenType.IsGreaterThan:
                            binopType = LuaBinaryOperatorType.IsGreaterThan;
                            break;
                        case SPAGS.TokenType.IsGreaterThanOrEqualTo:
                            binopType = LuaBinaryOperatorType.IsGreaterThanOrEqualTo;
                            break;
                        case SPAGS.TokenType.IsLessThan:
                            binopType = LuaBinaryOperatorType.IsLessThan;
                            break;
                        case SPAGS.TokenType.IsLessThanOrEqualTo:
                            binopType = LuaBinaryOperatorType.IsLessThanOrEqualTo;
                            break;
                        case SPAGS.TokenType.IsNotEqualTo:
                            binopType = LuaBinaryOperatorType.IsNotEqualTo;
                            break;
                        case SPAGS.TokenType.LogicalAnd:
                            binopType = LuaBinaryOperatorType.LogicalAnd;
                            break;
                        case SPAGS.TokenType.LogicalOr:
                            binopType = LuaBinaryOperatorType.LogicalOr;
                            break;
                        case SPAGS.TokenType.Modulus:
                            binopType = LuaBinaryOperatorType.Modulus;
                            break;
                        case SPAGS.TokenType.Multiply:
                            binopType = LuaBinaryOperatorType.Multiply;
                            break;
                        case SPAGS.TokenType.Subtract:
                            binopType = LuaBinaryOperatorType.Subtract;
                            break;
                    }
                    break;
                case SPAGS.ExpressionType.Call:
                    break;
                case SPAGS.ExpressionType.CharLiteral:
                    break;
                case SPAGS.ExpressionType.Constant:
                    break;
                case SPAGS.ExpressionType.Custom:
                    break;
                case SPAGS.ExpressionType.EnumValue:
                    SPAGS.Expression.EnumValue enumValue = (SPAGS.Expression.EnumValue)agsExpr;
                    if (enumValue.TheValue.OwnerType.Name == "bool")
                    {
                        return (enumValue.TheValue.Value == 0) ? False : True;
                    }
                    return new GlobalAccess(enumValue.TheValue.Name);
                case SPAGS.ExpressionType.Field:
                    break;
                case SPAGS.ExpressionType.FloatLiteral:
                    return new NumberLiteral(((SPAGS.Expression.FloatLiteral)agsExpr).Value);
                case SPAGS.ExpressionType.Function:
                    break;
                case SPAGS.ExpressionType.IntegerLiteral:
                    return new IntegerLiteral(((SPAGS.Expression.IntegerLiteral)agsExpr).Value);
                case SPAGS.ExpressionType.Method:
                    break;
                case SPAGS.ExpressionType.Null:
                    return Nil;
                case SPAGS.ExpressionType.StringLiteral:
                    return new StringLiteral(((SPAGS.Expression.StringLiteral)agsExpr).Value);
                case SPAGS.ExpressionType.StructType:
                    break;
                case SPAGS.ExpressionType.UnaryOperator:
                    SPAGS.Expression.UnaryOperator unop = (SPAGS.Expression.UnaryOperator)agsExpr;
                    switch (unop.Token.Type)
                    {
                        case SPAGS.TokenType.Subtract:
                            break;
                        case SPAGS.TokenType.LogicalNot:
                            break;
                    }
                    break;
                case SPAGS.ExpressionType.Variable:
                    break;
            }
            return null;
        }