Здравствуйте, Shmj, Вы писали:
S>Нужно генерить некий JS-код динамически, при этом не тащить слишком много кода в проект (т.е. целый Google V8 и подобное — слишком тяжело).
S>Именно нужно, к примеру, изменить имена (функций, переменных), добавить некий код.
S>Что бы вы использовали из готового, дабы не писать вручную?
Используй некий шаблонизатор, на крайняк обычные регулярки
Re[2]: Легковесная библиотека синтаксического дерева JS
Здравствуйте, kov_serg, Вы писали:
_>Используй некий шаблонизатор, на крайняк обычные регулярки
Ну парсер то можно стандартный — динамически парсить ничего не нужно. Вот есть дерево в JSON-формате. Его как-то нужно обернуть в объектную модель с возможностью добавлять разные узлы и пр. и потом заново превратить в JS-код. Вроде можно и вручную написать (тем более что не стоит задачи покрыть весь JS — только часть синтаксиса), но может что готовое в природе есть.
Re: Легковесная библиотека синтаксического дерева JS
Здравствуйте, Shmj, Вы писали:
S>Нужно генерить некий JS-код динамически, при этом не тащить слишком много кода в проект (т.е. целый Google V8 и подобное — слишком тяжело).
Смотря, что мне было бы нужно. Одно дело написать простенький генератор, который кушает какое-нибудь описание чего-нибудь и генерирует JS-код. Другое дело, написать серьезный анализатор существующего JS-кода.
Разные задачи требуют разных инструментов.
Re[2]: Легковесная библиотека синтаксического дерева JS
Нужно на C++, а там большинство на самом JS.
Pzz>Смотря, что мне было бы нужно. Одно дело написать простенький генератор, который кушает какое-нибудь описание чего-нибудь и генерирует JS-код. Другое дело, написать серьезный анализатор существующего JS-кода.
Pzz>Разные задачи требуют разных инструментов.
Дерево в виде JSON — уже есть. Нужно по нему строить объектную модель, типа для каждого узла создать объект с вложенными объектами с возможностью добавить что-то, изменить что-то и в конечном итоге вызвать функцию типа dump и получить чистый JS-код.
Re: Легковесная библиотека синтаксического дерева JS
Здравствуйте, Shmj, Вы писали:
S>Нужно генерить некий JS-код динамически, при этом не тащить слишком много кода в проект (т.е. целый Google V8 и подобное — слишком тяжело).
S>Именно нужно, к примеру, изменить имена (функций, переменных), добавить некий код.
S>Что бы вы использовали из готового, дабы не писать вручную?
ИЗ ЧЕГО генерить? Из логики, размазанной по проекту? Просто строковые операции.
I'm a sewer mutant, and my favorite authors are Edgar Allan Poo, H.G. Smells and George R.R. Martin.
Re[2]: Легковесная библиотека синтаксического дерева JS
Здравствуйте, Alekzander, Вы писали:
S>>Именно нужно, к примеру, изменить имена (функций, переменных), добавить некий код. S>>Что бы вы использовали из готового, дабы не писать вручную?
A>ИЗ ЧЕГО генерить? Из логики, размазанной по проекту? Просто строковые операции.
Ну, к примеру, нужно найти все имена переменных и заменить их на случайные. Потом найти все функции и добавить в начало функций несколько случайных инструкций, которые в конечном счете ничего не делают. Типа простой обфускации.
Re[3]: Легковесная библиотека синтаксического дерева JS
https://github.com/gubaojian/esprima-cpp
Pzz>>Разные задачи требуют разных инструментов.
S>Дерево в виде JSON — уже есть. Нужно по нему строить объектную модель, типа для каждого узла создать объект с вложенными объектами с возможностью добавить что-то, изменить что-то и в конечном итоге вызвать функцию типа dump и получить чистый JS-код.
Но JSON сам по себе, это и есть объектная модель. JSON — это, всего лишь, текстовое представление JS-овских объектов. Причем в синтаксисе, совместимым с JS, поэтому может быть напрямую использован в качестве инициализатора.
Так что непонятно, чего ты хочешь.
Re[3]: Легковесная библиотека синтаксического дерева JS
Здравствуйте, Shmj, Вы писали:
S>>>Именно нужно, к примеру, изменить имена (функций, переменных), добавить некий код. S>>>Что бы вы использовали из готового, дабы не писать вручную?
A>>ИЗ ЧЕГО генерить? Из логики, размазанной по проекту? Просто строковые операции.
S>Ну, к примеру, нужно найти все имена переменных и заменить их на случайные. Потом найти все функции и добавить в начало функций несколько случайных инструкций, которые в конечном счете ничего не делают. Типа простой обфускации.
Изначально ты написал: "Нужно генерить некий JS-код динамически". А теперь, оказывается, переименовать переменные. Это не "генерить", а "изменить" код.
Тебе надо на вход принимать JS, и на выходе давать JS? Или ты ещё сам не знаешь, чего хочешь?
I'm a sewer mutant, and my favorite authors are Edgar Allan Poo, H.G. Smells and George R.R. Martin.
Re[4]: Легковесная библиотека синтаксического дерева JS
Парсер не нужен, уже есть дерево в виде JSON.
S>>Дерево в виде JSON — уже есть. Нужно по нему строить объектную модель, типа для каждого узла создать объект с вложенными объектами с возможностью добавить что-то, изменить что-то и в конечном итоге вызвать функцию типа dump и получить чистый JS-код.
Pzz>Но JSON сам по себе, это и есть объектная модель. JSON — это, всего лишь, текстовое представление JS-овских объектов. Причем в синтаксисе, совместимым с JS, поэтому может быть напрямую использован в качестве инициализатора.
Pzz>Так что непонятно, чего ты хочешь.
JSON — слишком общий, из него нельзя сделать JS просто так — нужно смотреть каждый узел и на основе типа узла генерить код.
Хотелось бы чтобы для функций — был один тип объектов, для объявления классов JS — другой тип объектов и т.д.
И потом метод dump — чтобы все дерево обратно развернуть в JS-код.
Re[4]: Легковесная библиотека синтаксического дерева JS
Здравствуйте, Alekzander, Вы писали:
S>>Ну, к примеру, нужно найти все имена переменных и заменить их на случайные. Потом найти все функции и добавить в начало функций несколько случайных инструкций, которые в конечном счете ничего не делают. Типа простой обфускации.
A>Изначально ты написал: "Нужно генерить некий JS-код динамически". А теперь, оказывается, переименовать переменные. Это не "генерить", а "изменить" код.
Не только переименовывать, но и добавлять новые инструкции.
A>Тебе надо на вход принимать JS, и на выходе давать JS? Или ты ещё сам не знаешь, чего хочешь?
На входе можно не JS а уже готовое распарсенное дерево в виде JSON. А на выходе да, JS.
Re[5]: Легковесная библиотека синтаксического дерева JS
Здравствуйте, Shmj, Вы писали:
S>... S>На входе можно не JS а уже готовое распарсенное дерево в виде JSON. А на выходе да, JS.
Что ты понимаешь под "готовым распаршеным деревом в виде JSON"? Ты про AST слышал когда-нибудь? Какая конечная цель, хочешь обфускатор js кода сделать? Что конкретно ты хочешь сделать, с примерами? Или опять флуд ради флуда?
Здравствуйте, SaZ, Вы писали:
SaZ>Что ты понимаешь под "готовым распаршеным деревом в виде JSON"? Ты про AST слышал когда-нибудь?
Синтаксическое дерево — AST — это аббревиатура — Abstract syntax tree — оно и есть. Его легко получить — множество парсеров, причем мне нужно его получить только один раз, по этому нет требования чтобы парсер был на C++. Оно есть готовое.
SaZ>Какая конечная цель, хочешь обфускатор js кода сделать? Что конкретно ты хочешь сделать, с примерами?
Динамический обфускатор JS на C++ — чтобы при каждом запуске давал очень разный JS на основе синтаксического дерева.
На данном этапе хотя бы найти построение объектной модели по этому дереву с возможностью дампить в JS, а то придется писать вручную.
Здравствуйте, Shmj, Вы писали:
S>... S>Динамический обфускатор JS на C++ — чтобы при каждом запуске давал очень разный JS на основе синтаксического дерева. S>На данном этапе хотя бы найти построение объектной модели по этому дереву с возможностью дампить в JS, а то придется писать вручную.
По каким ключевым словам гуглил и почему найденные результаты не устраивают? И ссылочку на компилируемый репозиторий, где ты попробовал что-то сделать, чтобы подтвердить что ты тут не просто флуд разводишь.
Re[8]: Легковесная библиотека синтаксического дерева JS
Здравствуйте, SaZ, Вы писали:
SaZ>По каким ключевым словам гуглил и почему найденные результаты не устраивают? И ссылочку на компилируемый репозиторий, где ты попробовал что-то сделать, чтобы подтвердить что ты тут не просто флуд разводишь.
По ключевым словам — на C++ нет ничего, а я ограничен в выборе технологий. Репо закрыт по NDA.
З.Ы.
В принципе написал уже простую версию сам для части инструкций и постепенно добавляю, но все-равно рассмотрел бы что-то готовое.
Здравствуйте, Shmj, Вы писали:
S>Ну, к примеру, нужно найти все имена переменных и заменить их на случайные. Потом найти все функции и добавить в начало функций несколько случайных инструкций, которые в конечном счете ничего не делают. Типа простой обфускации.
Поскольку мы на российском форуме, то по традиции:
1. Обфускацию Js кода не всякий код переживёт. Отлавливать такие баги на продакшене — то ещё удовольствие.
2. Делать анализ динамического языка на статически типизированном без дополнительной докомпиляции или динамических плагинов — так себе идея.
Пункт (2) требуем наличие виртуальной машины для трансформации.
Пункт (1) делает возможным лишь очень небольшой набор гарантированно безопасных трансформаций.
На мой взгляд, гарантированно безопасным будет лишь простое переформатирование кода.
Здравствуйте, Shmj, Вы писали:
S>По ключевым словам — на C++ нет ничего, а я ограничен в выборе технологий. Репо закрыт по NDA.
Никакие NDA не запрещают сделать пет проект с аналогичной задачей. И в очередной раз напоминаю про: https://rsdn.org/Info/Howtoask.xml
S>В принципе написал уже простую версию сам для части инструкций и постепенно добавляю, но все-равно рассмотрел бы что-то готовое.
Вот с этого стоит начинать, а не тратить время людей с рсдн.
Re[10]: Легковесная библиотека синтаксического дерева JS
Здравствуйте, SaZ, Вы писали:
SaZ>Никакие NDA не запрещают сделать пет проект с аналогичной задачей. И в очередной раз напоминаю про: https://rsdn.org/Info/Howtoask.xml
Нет ресурсов для этого.
S>>В принципе написал уже простую версию сам для части инструкций и постепенно добавляю, но все-равно рассмотрел бы что-то готовое. SaZ>Вот с этого стоит начинать, а не тратить время людей с рсдн.
Так когда я спросил — еще ничего не было.
Re[11]: Легковесная библиотека синтаксического дерева JS
Здравствуйте, Shmj, Вы писали:
SaZ>>Никакие NDA не запрещают сделать пет проект с аналогичной задачей. И в очередной раз напоминаю про: https://rsdn.org/Info/Howtoask.xml S>Нет ресурсов для этого.
Тогда не стоит спрашивать. Нужно уважать других людей и правила комьюнити где вы общаетесь.
Re[12]: Легковесная библиотека синтаксического дерева JS
Здравствуйте, SaZ, Вы писали:
SaZ>>>Никакие NDA не запрещают сделать пет проект с аналогичной задачей. И в очередной раз напоминаю про: https://rsdn.org/Info/Howtoask.xml S>>Нет ресурсов для этого.
SaZ>Тогда не стоит спрашивать. Нужно уважать других людей и правила комьюнити где вы общаетесь.
Т.е. если нет ресурсов (времени/денег) чтобы запилить открытый проект — то нечего и на форуме спрашивать о готовых библиотеках ?