Pytocs.Translate.StatementTranslator.VisitExp C# (CSharp) Method

VisitExp() public method

public VisitExp ( ExpStatement e ) : void
e ExpStatement
return void
        public void VisitExp(ExpStatement e)
        {
            var ass = e.Expression as AssignExp;
            if (ass != null)
            {
                var idDst = ass.Dst as Identifier;
                if (idDst != null)
                    EnsureLocalVariable(idDst.Name, new CodeTypeReference(typeof(object)), false);

                var dstTuple = ass.Dst as ExpList;
                if (dstTuple != null)
                {
                    var srcTuple = ass.Src as ExpList;
                    if (srcTuple != null)
                    {
                        EmitTupleToTupleAssignment(dstTuple.Expressions, srcTuple.Expressions);
                    }
                    else
                    {
                        var rhsTuple = ass.Src.Accept(xlat);
                        EmitTupleAssignment(dstTuple.Expressions, rhsTuple);
                    }
                    return;
                }
                var rhs = ass.Src.Accept(xlat);
                var lhs = ass.Dst.Accept(xlat);
                if (gen.CurrentMethod != null)
                {
                    if (ass.op == Op.Assign)
                    {
                        gen.Assign(lhs, rhs);
                    }
                    else
                    {
                        gen.SideEffect(e.Expression.Accept(xlat));
                    }
                }
                else
                {
                    var id = ass.Dst as Identifier;
                    if (id != null)
                    {
                        ClassTranslator_GenerateField(id, xlat, ass);
                    }
                    else
                    {
                        EnsureClassConstructor().Statements.Add(
                            new CodeAssignStatement(lhs, rhs));
                    }
                }
                return;
            }
            if (gen.CurrentMethod != null)
            {
                var ex = e.Expression.Accept(xlat);
                gen.SideEffect(ex);
            }
            else
            {
                var ex = e.Expression.Accept(xlat);
                EnsureClassConstructor().Statements.Add(
                    new CodeExpressionStatement( e.Expression.Accept(xlat)));
            }
        }