![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
Се ля ви |
|
|||
![]() Java/SOAрхитектор ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2016 Регистрация: 5.6.2004 Где: place without tim e and space Репутация: 5 Всего: 127 |
Нужен какой-то способ парсить JavaScript-код и трансформировать его в какой-либо XML-документ. Желательно при этом ничего не терять для того, что бы было возможно обратное преобразование (желательно иметь XSLT-таблицу или иной способ обратного преобразования, хотя это не обязательно - можно и самому написать).
Как ни искал - не нашёл ничего похожего. Сейчас копаюсь в исходниках Rhino, пытаясь использовать их парсер для формирования такого документа, но думаю, может есть способ по-проще? Сфер применения для этого - колоссальное количество. Можно писать на XSLT оптимизатор кода, можно - добавлять поддержку новых конструкций в язык (указывая в XSLT их реализацию и удобно скрывая её от пользователя), можно вносить дополнительные конструкции, ориентируясь на JSDoc-комментарии (проверку типов параметров в начале функции, например), можно автоматически вставлять хаки для браузеров, не полностью поддерживающих стандарты W3C и ECMA - и т.д. Нужен только представление JS-кода в виде удобного XML-формата. P.S. В принципе, можно было бы и вручную чё-то наваять, но уж очень пугает необязательность символа ";" в конце выполняемой конструкции - фактически, алгоритм разбора из-за этого становится многократно сложнее: как в общем случае определять конец конструкции - не совсем ясно... -------------------- |
|||
|
||||
IDVsbruck |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 778 Регистрация: 12.11.2006 Репутация: 8 Всего: 22 |
Ха! Разрыв строки имеет больший приоритет в js, чем точка с запятой. При любом парсировании выявить его не составит труда.
Заодно валидацию в виде той же точки с запятой можно осуществить. |
|||
|
||||
Се ля ви |
|
||||||||||||
![]() Java/SOAрхитектор ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2016 Регистрация: 5.6.2004 Где: place without tim e and space Репутация: 5 Всего: 127 |
Будет интерпретировано не так, как
А
Можно придумать и более сложные случаи. Суть преобразования, насколько я понимаю, в том, что если выражение до символа переноса строки может быть интерпретировано как завершённое, то считается, что там стоит ";", если нет - символ конца строки не учитывается интерпретатором. Но для того, что бы в общем случае это учесть, нужно встраивать интерпретатор JavaScript в программу и проверять каждую строку методом eval. Мне это не представляется рациональным... -------------------- |
||||||||||||
|
|||||||||||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
валидатора нету? можно же регулярным выражением попробовать... если не очень сильно запутано...
вот есть встроенный JavaScript я видел http://search.cpan.org/~claesjac/JavaScrip...b/JavaScript.pm Это сообщение отредактировал(а) gcc - 2.2.2010, 20:20 |
|||
|
||||
Се ля ви |
|
|||
![]() Java/SOAрхитектор ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2016 Регистрация: 5.6.2004 Где: place without tim e and space Репутация: 5 Всего: 127 |
Насколько я могу судить, для Perl`а это то же самое, что и Rhino - для Java или SpiderMonkey для С++. Но штука-то не в этом. Мне на выходе нужен XML-документ, а не интерпретирование этого кода. -------------------- |
|||
|
||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |