Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кнопка "Код", Как сделать чтобы ее нажимали 
:(
    Опции темы
Alexeis
Дата 12.8.2006, 01:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 13
Всего: 459



Определить что в тексте код это одна задача, но определить тип кода это задача намного более сложня. 
Дело в том, что одни и те же термины часто встречаются в разных языках. Например оператор for есть почти во всех языках. Более того ключевые слова одного языка легко могут используются в качестве идентификатора в другом. Т.о. наличие определеных ключевых слов не может определять тип языка. 
С++ и С++ Builder, отличить будет почти невозможно. 
Удаление таких "опасных" терминов приводит к тому, что в словарях остаются малораспространеные термины, поиск которых малоэффективен. В этом смысле использование регулярных выражений бессмыслено. В связи с этим вижу два пути решеня. 
1) Класический - статистика, т.е. статистика появления тех или иных терминов, причем не только ключевых  слов. Для этого требуется перелопатить море кода для каждого языка и выделить около сотни самых распространеных выражений. При этом в каждом фрагменте кода надо считать число совпадений со словарем каждого языка, и там где совпадений будет больше тот язык и будет считатся определеным.  
Такой подход требует огромное количество статистических данных и умеренных вычислительных затрат, поскольку алгоритмы поиска можно неплохо оптимизировать. Вместе с тем результат может быть надежным на достаточно большом фрагменте данных.
2) Второй путь использовать исключительные особенности языком, так, например, поиск выражения
':=.*?\;' - даст положительный результат только в делфи, анологично '^\s*\$[_A-Za-z]+w*?\s*=' довольно часто появляется в PHP, но не может встречатся ни в одном другом языке, разве что в коментарии, которые естествено надо удалить из анализируемого текста. Этот путь достаточно прост, но при этом и достаточно ненадежен, поскольку таких выражений не так уж много, и их появление не обязательно в коротком коде. Статистика более надежная вещь smile.

Оба метода требуют знания специфики языка. 
Жду предложений может кто придумает третий вариант, или подскажет какой из методов получше.



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
R.M.
Дата 14.8.2006, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Анархист
****


Профиль
Группа: Участник
Сообщений: 2164
Регистрация: 8.6.2005
Где: Питер

Репутация: 1
Всего: 30



ИМХО 2 метод лучше и проще. А у C++ и C++ Builder разная подсветка?


--------------------
Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека.

Nokia LifeStyle - Всё для смартфонов Nokia 
PM MAIL WWW ICQ   Вверх
sergejzr
Дата 14.8.2006, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 35
Всего: 360



Цитата(Куксикус @  14.8.2006,  09:01 Найти цитируемый пост)
ИМХО 2 метод лучше и проще. А у C++ и C++ Builder разная подсветка?

smile да. Мне лично cppb больше нравиться. Я её сделал самой первой. И в принципе слизал с Bloodshed C++. Но народу больше нравиться Visual и 
cppb мало пользуются smile


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Alexeis
Дата 14.8.2006, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 13
Всего: 459



Цитата(Куксикус @  14.8.2006,  11:01 Найти цитируемый пост)
ИМХО 2 метод лучше и проще. А у C++ и C++ Builder разная подсветка?

Мне тож он нравится, но реализовать его я не смогу smile , одно дело регу составить, другое полноценный код на PHP писать (которого я почти не знаю). Знатоки С++ поделисесь, чем С++ так отличается от других языков, какая конструкция самая распространеная и вместе с тем уникальная, может '++'? да и для Visual Basic, неплохо что нибудь придумать. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
ivashkanet
Дата 14.8.2006, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 3
Всего: 149



Цитата(alexeis1 @  12.8.2006,  01:47 Найти цитируемый пост)
но определить тип кода это задача намного более сложня. 

А зачем определять тип кода? Ведь главное же предупредить!
Юзер сам сможет выбрать нужный тип кода  smile 
А если не может, то его нужно бить  smile  smile 
Кроме того за каждым разделом закреплен конкретный тип кода. Можно его брать.
Для С-подобных языков очень удачным будет поиск "{", "}".
Для VB -- ключевое слово End И т.д.
Любой более-менее большей код будет содержать эти конструкции.
А если не содержит, то его можно и не подсвечивать. 
+ В этом случае отпадет (почти) проблемма с кодом внутри строки

PM MAIL WWW ICQ   Вверх
Mayk
Дата 14.8.2006, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 2
Всего: 134



Цитата(alexeis1 @  14.8.2006,  18:31 Найти цитируемый пост)
в, какая конструкция самая распространеная и вместе с тем уникальная, может '++'?

да никакая почти 
#define встречается даже в некоторых ассемблерах (я знаю целый один - gnu asm).

Цитата(alexeis1 @  14.8.2006,  18:31 Найти цитируемый пост)
может '++'?

есть в java. Есть в sh скриптах.

Цитата(sergej.z @  14.8.2006,  16:10 Найти цитируемый пост)
Мне лично cppb больше нравиться.

а у меня вообще цвета форсированные на белый шрифт и зелёный фон =)



--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Alexeis
Дата 14.8.2006, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 13
Всего: 459



Цитата(ivashkanet @  14.8.2006,  14:40 Найти цитируемый пост)
 VB -- ключевое слово End

К сожалению в делфях End не менее распространен.
Цитата(ivashkanet @  14.8.2006,  14:40 Найти цитируемый пост)
А зачем определять тип кода? Ведь главное же предупредить!

Ну этот вопрос вроде как закрыли, администрация его не поддержала.
Определять тип кода предложил sergej.z, если пользователь не указал тип подсветки.

Добавлено @ 14:53 
Цитата(Mayk @  14.8.2006,  14:45 Найти цитируемый пост)
есть в java. Есть в sh скриптах.
 java редко появляется в центре помощи, мало кто из навичков пишет на jave, тем реже будут проблемы поскольку забывают ставить тип не все. Сильно отличается java подсветка от C++?


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
ivashkanet
Дата 14.8.2006, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 3
Всего: 149



Цитата(alexeis1 @  14.8.2006,  14:48 Найти цитируемый пост)
К сожалению в делфях End не менее распространен.

C большей буквы? Без точки или точки с запятой (вроде) в конце?
PM MAIL WWW ICQ   Вверх
Alexeis
Дата 14.8.2006, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 13
Всего: 459



Цитата(ivashkanet @  14.8.2006,  14:56 Найти цитируемый пост)
C большей буквы? Без точки или точки с запятой (вроде) в конце?

А что Visual Basic регистро зависимый?

Встречается и без точки с запятой, если перед другим ендом или перед until или (тут уже обязательно)
Код

 if ...
 then
    Begin
      .....
    end
  else

и еще некоторые другие случаи.

Добавлено @ 15:18 
Цитата(ivashkanet @  14.8.2006,  14:40 Найти цитируемый пост)
Для С-подобных языков очень удачным будет поиск "{", "}".

К сожалению фигурные скобки это многострочный коментарий в Delphi.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
ivashkanet
Дата 14.8.2006, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 3
Всего: 149



Цитата(alexeis1 @  14.8.2006,  15:17 Найти цитируемый пост)
А что Visual Basic регистро зависимый?

Нет, но студия, например, упорно заменяет первую букву клчевых слов на большую smile
А код обычно из нее копируют smile

Добавлено @ 15:33 
проюежался по исходникам VB на форуме. Не нашел пи одного end с маленькой буквы.
PM MAIL WWW ICQ   Вверх
Alexeis
Дата 14.8.2006, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 13
Всего: 459



Цитата(ivashkanet @  14.8.2006,  15:26 Найти цитируемый пост)
проюежался по исходникам VB на форуме. Не нашел пи одного end с маленькой буквы.

А  если участник набирает код прямо в браузере? тогда врядли выйдет, но этот вариант все же неплохой, поскольку, я не встречал ни где в чужих исходниках по делфи "End"(в своих бывает smile ), обычно бывает либо "end" либо "END"

Добавлено @ 16:39 
Хотелось бы узнать еще соображения sergej.z, поскольку я даже не представляю в каком виде это будет внедрятся.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
R.M.
Дата 15.8.2006, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Анархист
****


Профиль
Группа: Участник
Сообщений: 2164
Регистрация: 8.6.2005
Где: Питер

Репутация: 1
Всего: 30



Цитата(alexeis1 @  14.8.2006,  16:17 Найти цитируемый пост)
К сожалению фигурные скобки это многострочный коментарий в Delphi. 

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


--------------------
Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека.

Nokia LifeStyle - Всё для смартфонов Nokia 
PM MAIL WWW ICQ   Вверх
Alexeis
Дата 15.8.2006, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 13
Всего: 459



Цитата(Куксикус @  15.8.2006,  10:48 Найти цитируемый пост)
Комменты обычно пишутся на русском, условия на английском.

можно язык, а можно и ключевые слова в фигурных скобках! 
Зачет!

с ассемблером я думаю сложности не будет.

Добавлено @ 12:43 
sergej.z, отзовись, какой вариант принимаем?


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Girder
Дата 27.8.2006, 02:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 25
Всего: 155



Цитата(alexeis1 @  12.8.2006,  02:47 Найти цитируемый пост)
':=.*?\;' - даст положительный результат только в делфи,
Не... не только.


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
Alexeis
Дата 28.8.2006, 01:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 13
Всего: 459



Цитата(Girder @  27.8.2006,  02:47 Найти цитируемый пост)
Не... не только. 

А где еще?


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Обсуждение форума | Следующая тема »


 




[ Время генерации скрипта: 0.0692 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.