Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Подсветка синтаксиса кода [4]
Та да, у Вас там походу идет парсинг phpDoc. Слижком много вариантов. Если не секрет сколько в строк(не символов) уместилась регулярка, или Вы несколькома делаете, и вообще сколько код весит. Интересно
я же говорил в моём коде не используется не одна регулярка, да и вобще из стандартных php функций там мало что используется, htmlentities в основном и strlen. На теперешний момент файл с кодом имеет 539 строк, но я пишу каждую фигурную скобку с новой строки поэтому ~20% строк это просто фигурные скобки. Файл веси 16 496 байт.
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
esterio
Отправлено: 17 Января, 2013 - 13:49:54
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
Перенесено из темы "Подсветка синтаксиса PHP" Ну если Вы делаете JS и PHP, то может мне стоит сделать HTML. О тм намного проще,
Вариантов несколько
1. регулярки
2. domDocument
3. js на стороне клиента
Если завтра успешно здадим проект то думаю возьмусь
Саныч
Отправлено: 17 Января, 2013 - 14:33:22
Участник
Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010 Откуда: Украина, Запорожье
Я бы даже сказал они вобще не работают... Однострочные нормально, многострочнуе - первые символы /* подсечиваются и дальше все...
esterio, понял. Не думаю что с использованием этой функции упроститься задача. Тем более судя по комментариям с ней не все впорядке...
Для JS не знаю... Браузер то полюбому как-то парсит код, но вот на сколько я знаю API для этого нет никаких. Но я его все равно сделаю, как на серваке так и на клиенте!
esterio пишет:
И да Саныч прав, составлять список трудоемкый процес
Не особо трудоемкий, нудный просто... У меня к примеру массив стандартных свойств, методов и констант javascript-а получился почти 550 элементов. На составление потрачено: 1 день и пол ночи
----- Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
esterio
Отправлено: 17 Января, 2013 - 15:16:50
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Не думаю что с использованием этой функции упроститься задача
Последний комент год назад, думаю счас подправили, но не уверен, а так использовал для своего автоматического автолоадера классов, он у меня составляет список с путями, вроде проблем не было, или потому что травлю только свой код (Добавление)
Саныч пишет:
1 день и пол ночи
Делов то, сутку потратить, я ленивый человек, ту же сутку сидел и делал бы парсер докы)))
Саныч
Отправлено: 17 Января, 2013 - 16:00:18
Участник
Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010 Откуда: Украина, Запорожье
Ну если Вы делаете JS и PHP, то может мне стоит сделать HTML. О тм намного проще,
Вариантов несколько
1. регулярки
2. domDocument
3. js на стороне клиента
Делайте конечно, оценим, потестируем, может в итоге объединим все наши наработки в единый проект.
Только знайте, я парсер HTML и CSS уже написал
HTML - ровно 20 строк, 3 регулярки
CSS - 25 строк, 5 регулярок. Но буду переписывать, не нравится мне он...
О знаю! До SQL еще никто из нас не добрался
----- Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
esterio
Отправлено: 17 Января, 2013 - 16:43:46
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Делов то, сутку потратить, я ленивый человек, ту же сутку сидел и делал бы парсер докы)))
Знаете как я в итоге поступил?.. Написал маленький кодик на js который выдавал мне строку всех доступных свойств и методов. Запустил его во всех браузерах, и скопировал полученые строки в массив. Затем еще один маленький кодик на php который показал мне, какие методы и свойства есть во всех браузерах. Ну, а затем полученный массив уже вручную фильтровался, выстраивалась иерархия, незнакомые/подзабытые свойства отыскивались в документации, гугле, короче решалось нужно ли оно мне или нет... В итоге 550 и почти сутки, с перерывами конечно, но все же...
OrmaJever, может нам объеденить наши темы, а то мы тут уже как-то смешали и php и js...
----- Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
OrmaJever
Отправлено: 17 Января, 2013 - 18:10:42
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Ну изначально так и задумывалось и вроде бы так и получилось, но... как всегда есть но, сейчас там именно подсетка, т.е. светим разными цветами и все... а хочеться сделать именно умный парсер, чтоб была подсетка ошибок, возможно автоисправление... По этому, я думаю они будут еще ни раз переписаны
OrmaJever пишет:
Я только пока не придумал как отличить sql запрос от обычной строки. Если регуляркой то какой?
Я думал сначало проверять строку на наличие таких слов как SELECT, INSERT, ALTER, FROM... ну ты понял. А дальше уже либо гонять через регулярки, либо посимвольно разбирать...
----- Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
esterio
Отправлено: 17 Января, 2013 - 20:21:06
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
Перенесено из темы "Подсветка синтаксиса PHP" Саныч
Да чет я до такого не додумался. Ето ж прикольно. а прототипи учитивали?
Да конечно стоить обьеденит, под названием парсеры кода или как то так.
OrmaJever пишет:
Спокойно, он мой. Хорошо Я только пока не придумал как отличить sql запрос от обычной строки. Если регуляркой то какой?
Ну думаю после практикы з PHP я Вам не конкурент (Добавление) Саныч
О только что рпишла мысля одна, в notepad++ есть все ключевые слова(или почти все)
Вот кусок конфига для ПыХы
Естественно. Весь js собственно на них и построен.
esterio пишет:
О только что рпишла мысля одна, в notepad++ есть все ключевые слова(или почти все)
Ну так этож ключевые слова... Их мало, очень мало... Мне же нужны были методы и свойства, а их notepad++ не светит. К примеру Dreamweaver, которым я постоянно пользуюсь, светит, но далеко не все... Но он их как светит, просто видит "знакомое" слово и светит его, без разбора. К примеру я могу написать var parse, и он его подсветит, я же хочу написать, чтоб он еще и "думал", что нужно светить, а что нет. К тому же в js есть свойства/методы которые есть только, к примеру, у объекта window, есть которые только у document, только у нодов, а есть такие что везде, но кроме window и т.д. и т.п. И вот все это хочу учесть...
OrmaJever пишет:
Так хватит тут не по теме говорить, Кидайте коды в парсер, мне важны ошибки.
Все молчу, молчу, молчу...
я кинул пару кодов, вроде нормально... по крайней мере комменты работают
----- Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
esterio
Отправлено: 17 Января, 2013 - 21:19:08
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
Перенесено из темы "Подсветка синтаксиса PHP" ок извините за оффтоп
А так далее статическые вызовы не работают, Цвет обьекта хорошо бы другим цветом (Добавление)
А так далее статическые вызовы не работают, Цвет обьекта хорошо бы другим цветом
я не совсем понял, но обьект это переменая и они подсвечиввается как переменая потому что
1) иначе была бы неразбериха и радуга
2) более важное что мой парсер не знает типов переменых, он ещё глупенький.
А статический вызов по имени класса должен подсвечивать это имя, если это не так то код в студию.
С именами класов и констант могут быть проблемы, но не потому что что-то сломалось, а потому что я это не учёл.
Классы подсвечиваются либо после оператора new либо если за именем стоит :: или имя переменой и если это не имя стандартной функции или ключевого слова.
Константы подсвечиваются после классов и проверяется что бы после имени константы небыло ( или {, других случаев я не вспомнил. (Добавление)
esterio пишет:
Вот код из джумлы. Вызов vmShouldDebug не подсветился
Пользовательские функции не подсвечиваются, вроде и хотел зделать и откладывал, сейчас займусь.
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.