private string encodeSpecialChars(string script)
        {
            ParseMaster parser = new ParseMaster();

            parser.Add("((\\$+)([a-zA-Z\\$_]+))(\\d*)", new ParseMaster.MatchGroupEvaluator(encodeLocalVars)); // replace: $name -> n, $$name -> na
            Regex regex = new Regex("\\b_[A-Za-z\\d]\\w*");                                                    // replace: _name -> _0, double-underscore (__name) is ignored

            encodingLookup = analyze(script, regex, new EncodeMethod(encodePrivate));                          // build the word list
            parser.Add("\\b_[A-Za-z\\d]\\w*", new ParseMaster.MatchGroupEvaluator(encodeWithLookup));
            script = parser.Exec(script);
            return(script);
        }
        private string encodeKeywords(string script)
        {
            if (Encoding == PackerEncoding.HighAscii)
            {
                script = escape95(script);                                                                                                  // escape high-ascii values already in the script (i.e. in strings)
            }
            ParseMaster  parser = new ParseMaster();                                                                                        // create the parser
            EncodeMethod encode = getEncoder(Encoding);
            Regex        regex  = new Regex((Encoding == PackerEncoding.HighAscii) ? "\\w\\w+" : "\\w+");                                   // for high-ascii, don't encode single character low-ascii

            encodingLookup = analyze(script, regex, encode);                                                                                // build the word list
            parser.Add((Encoding == PackerEncoding.HighAscii) ? "\\w\\w+" : "\\w+", new ParseMaster.MatchGroupEvaluator(encodeWithLookup)); // encode
            return((script == string.Empty) ? "" : bootStrap(parser.Exec(script), encodingLookup));                                         // if encoded, wrap the script in a decoding function
        }
        // нулевое кодирование - просто удаление пробелов и комментариев
        private string basicCompression(string script)
        {
            ParseMaster parser = new ParseMaster();

            parser.EscapeChar = '\\';                                         // сделать безопасным
            parser.Add("'[^'\\n\\r]*'", IGNORE);                              // защитить строки
            parser.Add("\"[^\"\\n\\r]*\"", IGNORE);
            parser.Add("\\/\\/[^\\n\\r]*[\\n\\r]");                           // удалить комментарии
            parser.Add("\\/\\*[^*]*\\*+([^\\/][^*]*\\*+)*\\/");
            parser.Add("\\s+(\\/[^\\/\\n\\r\\*][^\\/\\n\\r]*\\/g?i?)", "$2"); // защитить регулярные выражения
            parser.Add("[^\\w\\$\\/'\"*)\\?:]\\/[^\\/\\n\\r\\*][^\\/\\n\\r]*\\/g?i?", IGNORE);
            // Удалить: ;;; сделай что-нибудь();
            if (specialChars)
            {
                parser.Add(";;[^\\n\\r]+[\\n\\r]");
            }

            parser.Add(";+\\s*([};])", "$2");              // удалить лишние точки с запятой
            parser.Add("(\\b|\\$)\\s+(\\b|\\$)", "$2 $3"); // удалить пробел
            parser.Add("([+\\-])\\s+([+\\-])", "$2 $3");
            parser.Add("\\s+");
            return(parser.Exec(script)); // сделанный
        }