- Сообщения
- 8,671
- Репутация
- 2,481
Итак, я решил заняться гемо*ем... :laugh:
Прошу сюда писать тех, кто тесно сталкивался с Au3Stripper'ом и изучал его работу. А также тех, кто силён в парсинге строк.
На данном этапе интересует следующее:
* По какому принципу работают параметры в файле Au3Stripper.dat?
* Какой алгоритм лучше использовать для удаления неиспользуемых переменных?
* Какой алгоритм лучше использовать для удаления неиспользуемых функции?
* Что нужно учитывать при очистке?
* Нужны ли au3.api?
Всё вышесказанное, применимо к уже используемому алгоритму получение RAW кода, т.е на данный момент мне уже удалось превратить главный скрипт в один целый сливая все Includ'ы в один исходник, поэтому отталкиваться нужно уже с этой точки (хотя для оптимизации скорости конечно было бы лучше делать всё за один проход).
Заметки (в процессе изучения):
Прошу сюда писать тех, кто тесно сталкивался с Au3Stripper'ом и изучал его работу. А также тех, кто силён в парсинге строк.
На данном этапе интересует следующее:
* По какому принципу работают параметры в файле Au3Stripper.dat?
* Какой алгоритм лучше использовать для удаления неиспользуемых переменных?
* Какой алгоритм лучше использовать для удаления неиспользуемых функции?
* Что нужно учитывать при очистке?
* Нужны ли au3.api?
Всё вышесказанное, применимо к уже используемому алгоритму получение RAW кода, т.е на данный момент мне уже удалось превратить главный скрипт в один целый сливая все Includ'ы в один исходник, поэтому отталкиваться нужно уже с этой точки (хотя для оптимизации скорости конечно было бы лучше делать всё за один проход).
Заметки (в процессе изучения):
[Принципы стрипа]
* Для работы с массивами использовать Dictionary (должно быть быстрее).
* Первый этап - склеивание библиотек в один исходный код.
* При склеивании (по порядку):
- Склеивать обрывающиеся строки с «_» в одну.
- Удалять пустые строки, строки комментариев (включая блоки), пробелы в начале и в конце каждой строки.
- Удалять лишь следующие строки директив (начинающиеся с #): #pragma compile, #include-once, #include.
* Учитывать функцию в #OnAutoItStartRegister.
* Брать игнорируемые функции со всех директив #Au3Stripper_Ignore_Funcs/Vars, не только из той что в основном скрипте.
* Принципы удаления переменных:
- Претендуют на удаление только те переменные, которые имеют Global или Local в начале, а также те, которым не присваивается значение возвращаемое от обработки функции.
- Если объявлена локальная переменная с именем глобальной, то глобальная считается неиспользуемой.
- Если в перечни объявленных переменных найдена хоть одна используемая, то строка с объявлением не трогается.
[Принципы работы программы]
* Ini для указания путей (как приоритет). Для портативности.
* После Ini искать пути в папке верхнего уровня («..\», «..\..», «..\..\..»).
* В конце (если пути не найдены), искать в реестре («HKCU\Software\AutoIt v3\AutoIt\Include»).
* Сохранить те же параметры и директивы что и у Au3Stripper (для совместимости и лёгкой замены).
* Для работы с массивами использовать Dictionary (должно быть быстрее).
* Первый этап - склеивание библиотек в один исходный код.
* При склеивании (по порядку):
- Склеивать обрывающиеся строки с «_» в одну.
- Удалять пустые строки, строки комментариев (включая блоки), пробелы в начале и в конце каждой строки.
- Удалять лишь следующие строки директив (начинающиеся с #): #pragma compile, #include-once, #include.
* Учитывать функцию в #OnAutoItStartRegister.
* Брать игнорируемые функции со всех директив #Au3Stripper_Ignore_Funcs/Vars, не только из той что в основном скрипте.
* Принципы удаления переменных:
- Претендуют на удаление только те переменные, которые имеют Global или Local в начале, а также те, которым не присваивается значение возвращаемое от обработки функции.
- Если объявлена локальная переменная с именем глобальной, то глобальная считается неиспользуемой.
- Если в перечни объявленных переменных найдена хоть одна используемая, то строка с объявлением не трогается.
[Принципы работы программы]
* Ini для указания путей (как приоритет). Для портативности.
* После Ini искать пути в папке верхнего уровня («..\», «..\..», «..\..\..»).
* В конце (если пути не найдены), искать в реестре («HKCU\Software\AutoIt v3\AutoIt\Include»).
* Сохранить те же параметры и директивы что и у Au3Stripper (для совместимости и лёгкой замены).