|
|
|
| Всем привет! Подскажите пожалуйста, столкнулся с такой проблемой. Есть php скрипт весом около 300 кб, достаточно увесистый, и весь код в нем записан в одну строку, ну типо как библиотека jquery. Есть софт который может его распарсить в потребный вид или редактор который поймет эту кашу? | |
|
|
|
|
|
|
|
для: sanchescom
(22.02.2011 в 22:21)
| | Хм... задача вроде алгоритмизируемая, но что-то не упомню подходящей утилиты. Это класс или просто набор функций, может разбить сначала его на отдельные строки по ключевому слову function? Все ж полегче будет работать, если примете решение вручную его структурировать. | |
|
|
|
|
|
|
|
для: cheops
(22.02.2011 в 22:56)
| | Это библиотека классов, там несколько тысяч строк, год буду структурировать! Как-то же ей пользовались и декодер какой-то должен быть. И ни яндекс, ни гугл ничего не говорят. | |
|
|
|
|
|
|
|
для: sanchescom
(22.02.2011 в 23:03)
| | Библиотека секретная? Можете её прикрепить? Я бы покумекал на досуге, может и привел бы её к божескому виду при помощи регулярных выражений, решением бы поделился. Может еще кому будет интересно подключиться, задачка достаточно любопытная. | |
|
|
|
|
|
|
|
для: sanchescom
(22.02.2011 в 23:03)
| | Её, наверняка, можно применять не декодируя.
А описание интерфейсов держать отдельно от кода.
Скорее всего писали её по-человечески, а потом прогнали через конвертор.
Чтобы сделать такой конвертор "вперед" достаточно написать лексический анализатор php-кода
А чтобы сделать конвертор "назад" помимо этого потребуется еще и синтаксический анализатор.
Скрипач генератор кода не нужен.
Вернее, нужен, конечно, но он, собственно, должен только дерево в поток выкидывать, отступы расставляя.
писать такое на регулярках ... хм... снял бы шляпу, если б была. | |
|
|
|
|
|
|
|
для: Trianon
(22.02.2011 в 23:09)
| | Библиотеку дать не могу к сожалению, она как и база является коммерческой тайной. Предыдущий программист который писал ее таким не хитрым финтом решил поставить компанию в зависимость и сейчас передо мной стоит задача эту кашу разгрести. Все наверняка представляют библиотеку jquery, где весь код написан в одну строку, вот и в ней все также.
Я подумал может уже кто писал похожий конвертер или это какая-то прога так сминает в одну строку. | |
|
|
|
|
|
|
|
для: Trianon
(22.02.2011 в 23:09)
| | И кстати, думаю что без регулярных выражений тут не обойтись) | |
|
|
|
|
|
|
|
для: sanchescom
(22.02.2011 в 23:38)
| | Хм... там еще стек скорее всего понадобится, с общем если задачу решать чисто, придется повозиться (без библиотеки её нужно чисто решать), у меня-то в мыслях была пара грязных приемов :))) | |
|
|
|
|
|
|
|
для: cheops
(22.02.2011 в 23:46)
| | ну да дерево по другому не построить.
хотя в принципе не все так страшно, у нас по сути перевод строки только на { и ; так ведь ведь? Наткнулся на { кинул в стек, перевел строку шлепнул пробел умноженный на номер в стеке ну и так далее, завтра попробую. Может кто еще, что предложит еще? | |
|
|
|
|
|
|
|
для: cheops
(22.02.2011 в 23:46)
| | зачем стек?
Если методом рекурсивного спуска идти - штатного стека рекурсий php разве не хватит?
А выстраивать аккуратный табличный анализ LL(1) , LR(1) - чести много, по-моему.
В конце концов тогда уж и вправду на Yacc или Bison закорежить что-то подобное. | |
|
|
|
|
|
|
|
для: sanchescom
(22.02.2011 в 23:38)
| | Даже для лексического анализа мне накатать конечный автомат без регуярок проще, чем с ними.
Просто тормозить он будет знатно.
Что касается уровня синтаксиса - регулярки тут бесполезны. | |
|
|
|