2014-11-22 3 views
0

точки с запятой У меня есть кусок JavaScript, который имеет много comma operators, напримерОператор Запятая

"i".toString(), "e".toString(), "a".toString(); 

Есть ли способ с JavaScript, чтобы преобразовать их в точку с запятой?

"i".toString(); "e".toString(); "a".toString(); 
+0

Почему вы хотите конвертировать «» к „;“? Вы знаете regexp? – Aravind

+0

Да, но это не так просто, как замена всех запятых на точки с запятой. совпадение на основе шаблона не могло отличить разницу между запятыми между аргументами и фактическим оператором запятой. Я хочу преобразовать его из-за удобочитаемости (с большим объемом данных, его очень трудно читать) –

+0

Вы можете просто «пропустить» текст, когда вы сталкиваетесь с строкой, которая начинается с «function» и заканчивается на «{». – Aravind

ответ

1

Это может показаться ответным путем ... но я бы предложил против этого. Выполнение любых манипуляций с строкой для их изменения было бы практически невозможно. В дополнение к спискам аргументов определения функций вам также необходимо пропустить текст в строковых литералах или литералах регулярных выражений или вызовах функций или литералах массивов или литералах объектов или объявлениях переменных ... может быть, даже больше. Regex не может справиться с этим, включив и выключив, так как вы видите, что ключевые слова не могут справиться с этим.

Если вы действительно хотите их преобразовать, вам действительно нужно разобрать код и выяснить, какие из них являются оператором запятой. Кроме того, там могут быть некоторые случаи, когда присутствие запятая является отношение:

var a = 10, 20; 

не то же самое, как

var a = 10; 20; 

, например.

Так что я действительно не думаю, что вы должны попробовать. Но если вы этого захотите, я начну с поиска парсера javascript (или написав один, это не супер сложно, но, вероятно, он займет большую часть дня и может все еще быть ошибкой). Я уверен, что более продвинутые мини-инструменты, такие как Google, включают парсер, возможно, их источник поможет.

Затем вы разбираете его, чтобы найти фактические выражения запятой. Если используется возвращаемое значение, оставьте его в покое. Если нет, замените их выражениями, а затем восстановите строку исходного кода. Вы можете продолжить и отформатировать его на основе отступки области в это время тоже. Это может показаться довольно хорошим. Это будет просто кусок работы.

Вот парсер библиотека, написанная в JS: http://esprima.org/ (благодаря @torazaburo на этот комментарий)

+0

Нет, написание парсера займет гораздо больше дня. Вы должны сделать это относительно легко с помощью esprima. –

Смежные вопросы