private static string ToDottedNameString(Expression expr, PythonAst ast) { NameExpression name; MemberExpression member; ParenthesisExpression paren; if ((name = expr as NameExpression) != null) { return name.Name; } else if ((member = expr as MemberExpression) != null) { while (member.Target is MemberExpression) { member = (MemberExpression)member.Target; } if (member.Target is NameExpression) { return expr.ToCodeString(ast); } } else if ((paren = expr as ParenthesisExpression) != null) { return ToDottedNameString(paren.Expression, ast); } return null; }