Удобства ресурсов для копипаста
Вопрос простой: что, по-вашему, должно быть в удобном копипастере?
Неудобства: поле "вставленного" должно иметь моноширинный шрифт.
Выбор способа подсветки ужасен - компоновка языков кошмарна, найти нужный язык в том выпадающем списке нереально.
Всё намного проще тут:
http://codepad.org/
Но выбор языков маленький. Хотя, может это и правильно.
Там выбор среди языков, которые codepad.org может интерпретировать. В вашем случае можно выбрать наиболее популярные языки в виде радиобаттонов (как в моей ссылке), а остальные языки выбирать с помощью какого-нибудь текстового поля ввода.
Нужны грамматики для языков. Последовательно применяем грамматики ко входному тексту, случай с наименьшим количеством синтаксических ошибок с некоторой вероятностью укажет на язык.
Юзаю пастеоргру, обычно C# выбираю, с ASP.NET хуже - вместо него использую PHP подсветку, ибо ближе она по списку... этот комбобокс использовать ваще нельзя. Автодетект приветствуется - меньше телодвижений.
Т.е. если есть begin .... end то видимо это Delphi или Pascal, если { .... } - ближе к си-подобным языкам, если #<include unitname> видимо, это что-то из сей и так далее.
люди, кто хочет написать на PHP детектор языка? ну или на жаваскрипте, хз
Типа
function getLang(text){
var res='';
if(text.indexOf('begin')!=-1){
var res='PASCAL-TYPED';
}
else{
if(text.indexOf('<include')!=-1){
var res='C-TYPED';
}
else{
if(text.indexOf('echo')){
var res='PHP-TYPED';
}
//анализ других языков
if(...){
...
}
else{
var res='UNDEFINED TYPE';
}
}
}
return res;
}
Функция JavaScript. Параметр - код проги. Производит поиск специфических операторов, и возвращает примерный тип языка, если его нашла или UNDEFINED TYPE - если нет.
Конечно анализ глубоким не назовёшь. Плюс надо прикрутить вырезание выражений
в
апострофах, двойных кавычках, знаках /* */ и //...\n гдже ...-любой текст \n-символ перевода строки. Но это регулярами, а как их вертеть в JS я ни бум-бум
Судя по файлу описания языка используется какая-то унифицированная грамматика.
ну подсветку планируется использовать именно эту. ибо она православна чуть менее чем полностью.
ага, поди ка ты определи это уникальное множество. особенно не зная языка.
PS: Разве Geshi не тупая подсветка, оно детектить умеет?
PS2: Алгоритм скорее всего будет похож на поиск в тексте ключевых слов, последовательно для каждого из знакомых языков и выбор того языка, чьих ключевых слов в тексте оказалось больше.
Или я ошибаюсь?
неа, эт просто Sanila San огород городит :D
в конце концов, кто сказал, что именно в геши нужно искать список характерных слов?