Я хочу извлечь javasscript-код и выяснить, есть ли какие-либо создания динамических тэгов, например document.createElement('script');
Я пытался сделать это с помощью регулярных выражений, но с использованием регулярных выражений ограничивает меня только некоторыми форматами, поэтому я думал написания парсера javascript, который извлекает все ключевые слова, строки и функции из кода javascript.Написание парсера для javascript-кода
ответ
Может быть, вы должны попробовать использовать Burrito
В целом нет никакого способа узнать, является ли данная строка кода будет когда-либо бежать, вам нужно будет решить halting problem. Если вы ограничиваете свой анализ только тем, чтобы найти результаты вызова функции, вы не добились большого прогресса. Наивные методы по-прежнему будут легко обмануть, если вы просто используете регулярное выражение для document.createElement, вы не сможете сопоставить что-то простое, как document["create" + "Element"]
. В общем, вам нужно будет не только разобрать код, но и оценить его, чтобы обойти это. И чтобы быть уверенным, что вы можете оценить код, который вам снова понадобится для решения проблемы с остановкой.
Ну первое правило никогда не использует регулярное выражение для таких больших вещей, как DOM, или .... Вы должны разобрать его жестами. Хорошей новостью является то, что вам не нужно писать свои собственные. Есть несколько парсеров JS для JS.
Они могут быть немного трудно работать с ним. Но лучше работать с ними. Существуют и другие проекты, которые используют такие, как burrito или code surgeon. Таким образом, вы можете посмотреть исходный код и посмотреть, как они их используют.
Но есть и плохие новости, которые люди все еще могут перехитрить других людей, не говоря уже о парсерах и кодексе, который они пишут. По крайней мере, вам нужно оценить код с некоторыми переменными времени выполнения и посмотреть, пытается ли он получить доступ к DOM или нет.
- 1. Написание парсера для регулярных выражений
- 2. Написание парсера для строки JSON
- 3. Написание парсера для смешанных языков
- 4. Написание парсера для S-выражений
- 5. Написание парсера BibTex
- 6. Написание ручного парсера
- 7. php: написание фигурного парсера
- 8. Написание парсера с Wisent
- 9. Написание парсера для формата двоичных сообщений
- 10. Написание общего метода для парсера Enum
- 11. Написание парсера запросов в JavaScript
- 12. Написание официального парсера языка с Lisp
- 13. Написание парсера (для языка разметки): Теория и практика
- 14. Написание простого простого парсера для Unity3d (C# или Actionscript)
- 15. Написание тестов для функций парсера файлов модульным способом
- 16. Написание парсера сценария командной строки для 3DS Max 2010
- 17. PHP-сайт для парсера
- 18. Реализация парсера для ассемблера
- 19. Почему репликатор парсера парсера отсутствует?
- 20. Комбинировщик парсера для нумерованных значений
- 21. INS-файл парсера для C
- 22. Реализация парсера для языка уценки
- 23. Пример кода для парсера комментариев
- 24. Номер столбца парсера для CGFloat
- 25. Создание парсера для файла ics
- 26. Библиотека SQL-парсера для Java
- 27. Создание парсера для простого псевдокода?
- 28. Инструменты для анализатора лексера/парсера
- 29. Генератор парсера Earley для Java
- 30. Библиотека парсера Java для NetBeans
так что конкретно ваша проблема с написанием? –
Как вы знаете, что он не будет вызывать функции, которые создают элементы? Например, jQuery также может добавлять новые элементы в DOM, и ваш подход прямо сейчас не обнаружит этого. –
Я не знаю, как это начать – user1275375