Completeness of string analysis for dynamic languages