На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: B.V., ANDLL
Закрыто Song 21-07-2004: Обсуждение в http://forum.sources.ru/index.php?showtopic=59693
  
  • закрыта
> Тестирование подсветки синтаксиса
    Уважаемые коллеги! :)
    Ваш покорный слуга рад представить вам систему подсветки синтаксиса. :)
    Для форума программистов это очень важная добавка к функциям форума.
    На данный момент система подсветки синтаксиса работает по двум принципам:
    • принцип замены.
      Для зарезервированных слов.
      Например, для синтаксиса паскаля это замена begin на begin. Поддерживаются все возможные IBF теги.
      Например, выделение болдом:
      ExpandedWrap disabled
        Program MySuperLittleProgram;
        Begin
         { [b]Test[/b] }
        End.
        // that's all! what are you wating for? =)

    • принцип комментирования.
      В связи с тем, что комментарии бывают как двухсторонние:
      Для Дельфи:

      { комментарий }

      так и односторонние

      // комментарий

      это наложило некоторые ограничения. В частности, нет возможности менять начертания комментариев. Сейчас это строка выделенная италиком и серым цветом:
      ExpandedWrap disabled
         
        { комментарий }
        // комментарий
    Сообщение отредактировано: vot -
      О тегах:
      Чтобы ничего не усложнять и не переучивать участников, оставлен стандартный тег [ code ] (без пробелов).
      Внимание! Этот тег использует синтаксис, который является дефолтовым для того раздела, где он используется. К примеру:
      В разделе Дельфи тег [ code ] будет посдвечивать синтаксис по правилам Дельфм
      В разделе VC++ тег [ code ] будет подсвечивать синтаксис по правилам Си.
      В связи с тем, что в разных разделах можно использовать текст программ, написанных на разных языках, было бы неправильно подсвечивать все тексты по одному правилу.
      Поэтому будут добавлены все теги, соответсвующие всем цветовым схемам.
      К примеру, в разделе Дельфи можно использовать тег [ code ], а в разделе VC++ можно использоватьт тег [ code=pas ] и это приведёт к одному и тому же результату.
      Поэтому, написав два разных текста программы в разделе Дельфи так:

      [ code ]
      Procedure XXX;
      Begin
      End; [ /code ]

      [ code=cpp ]
      m_pMyWindow = new CMyFrameWnd;
      m_pMyWindow->Create(NULL,"",
      WS_OVERLAPPED | WS_THICKFRAME | WS_MAXIMIZEBOX |WS_MINIMIZEBOX | WS_SYSMENU,
      rect,
      NULL,NULL); [ /code ]

      это выдаст две совершенно разных подсветки.
      В одном и том же разделе Дельфи не имеет значения что использовать [ code ] или [ code=pas ].

      Пока, сделана только одна "цветовая" (в ковычках, потому использова только болд) схема для Паскаля. Поэтому, посдсветка синтаксиса работает только в соответствующих разделах. Тем не менее, если нужно, вы можете использовать в других разделах [ code=pas ], т.е. если есть необходимость подсветить синтаксис паскаля. Схемы выделения синтаксиса будут добавлены для других разделов:
      • по мере поступеления от модераторов этих разделов правил подсветки
      • по наличию моего свободного времени :)

      Само собой, после добавления цветовых схем будут добавлены и соответствующие теги [ code=cpp ], [ code=vba ], [ code = asm ] и т.д.
      Пока (повторюсь) работает только подсветка синтаксиса Паскаля. Можете посмотреть на работу скрипта в любом из разделов Дельфи или в разделе Паскаль.
      Сообщение отредактировано: Song -
        Млин, ещё не успел до конца написать уже сообщений накидали :)
        Сообщения Zed и ещё кого-то :) удалены по причине вашего нетерпения :)
          И напоследок:
          • Вы можете отключить вывод подсветки синтаксиса у себя в профиле, выбрав "Нет" в соотвествующем параметре
          • Если подсветка синтаксиса портит исходник (будут появляться лишние теги и пр., мало ли чего может быть пока не отработаем) или в других случах, когда вам это надо, Вы можете использоват тег [ CODE=no ], текст программы будет выведен так же как раньше.
            Например,
            ExpandedWrap disabled
              Procedure XXX;
              Begin
              End.

          Текущие проблемы:
          • Комментарии работают неправильно, если находятся внутри строковых литералов:
            ExpandedWrap disabled
              WriteLn(' { Comment } ');
              WriteLn(' // comment ');
          • Зарезервированные слова выделяются даже если они находятся внутри комментариев:

            ExpandedWrap disabled
              WriteLn(' Syntax HighLight ');
              // While we used this
              { For this code we used }

          Обсуждение идей, проблем, их решениий просьба посещать вот этот топик: Подсветка синтаксиса на форуме © Song
          Сообщение отредактировано: Song -
            ExpandedWrap disabled
              writeln readln;
              exit;
              asm;
              begin
              end;
              (*\?+-:@$
              is in external function ProcEdUre
              ....{in in in in in in}
              {$I-}
              property read write
              {$I ...}input,ouput,hi,addr
              2 Song: Есть ещё одна проблема: комментарии в комментариях:
              ExpandedWrap disabled
                program Mine;
                {This//That}WriteLn
                end.

              ExpandedWrap disabled
                program His;
                (*This{That*)WriteLn
                end.

              Добавлено в :
              Там вон ещё [ i ][ /i ] добавляются в сообщение

              Добавлено в :
              Кстати, в Паскале (* ... *) не подсвечивается как коммент...
                Цитата
                Jin X, 16.03.04, 18:12
                Кстати, в Паскале (* ... *) не подсвечивается как коммент...

                потому что не добавлено.
                Ребят, я просил обсуждение в другом топике.

                Добавлено в :
                ExpandedWrap disabled
                  (* comment *)
                  А именно - в этом "http://forum.sources.ru/index.php?showtopic=48095"
                    Подсветка синтаксиса переведена на "движок" Тишайшего (модератор раздела WWW Masters). Благодаря этому появилась возможность выделять некоторые элементы, которые ранее не были доступны - разделители, строковые литералы и другие элементы. А также автоматически решились проблемы с комментариями (см. выше).
                    Синтаксис описывается в специальном stx файле, который можно создать вручную (взяв к примеру один из действующих) так и через редактор "Edit Plus" ( http://www.editplus.com ). Там же можно скачать и готовые наборы для подсветки синтаксиса.
                    Также появилась ценная возможность использовать внутри тега CODE IBF теги (не знаю делал ли это Тишайший специально, может получилось заодно, но факт есть факт :) ).
                      Есть маленький проблем с ПодСветкой :) . А именно:
                      ExpandedWrap disabled
                        begin
                           B := 0;
                           for i := 1 to N do
                             if a[i] > 0 then inc(B); // *
                           writeln(b);
                        end;


                      B) **
                      Поэтому предлагаю отключать смайлы в к ;) де.
                      Сообщение отредактировано: Song -
                        мдя... :)
                          Done.
                          См. * - не преобразуется в смайлик
                          ** - преобразуется.
                          Остальные траблы будем решать по мере их появления.
                            Вот бага.
                            тут была (ASM)
                            disasm
                            Заключение такого в тег code
                            __asm {
                            __emit 0xc8
                            }

                            дает
                            ExpandedWrap disabled
                               
                              __asm
                              rcz, у вас { и } стояли как комментарий, а сам он не был описан.
                                2 All: Может, давайте будем обсуждать подсветку в Подсветка синтаксиса на форуме © Song ? :unsure:

                                2 rcz: Это временная подсветка. Для меня самого было неожиданностью, что в асме появилась подсветка <_<.
                                  Новый вариант подсветки:
                                  Подсветка синтаксиса на форуме © Song
                                    Анонсирована новая версия подсветки, версия 3 ;)
                                    Автор - Leprecon, модератор разделов Си.
                                    Подсветка обладает множеством возможностей, главной из которых - редактирование её правил модератором каждого конкретного раздела. Ознакомится с результатами можно здесь: Подсветка синтаксиса на форуме (сообщение #383051)
                                    Подсветка сейчас работает в разделах: Си, Дельфи, Паскаль.
                                    Для модераторов FAQ по созданию правил подсказки можно посмотреть и задать свои вопросы здесь: FAQ подсветки
                                      Еще походу бага!
                                        Цитата
                                        ViGOur, 21.06.04, 08:44
                                        Еще походу бага!
                                        А в чем там бага?
                                          Лю-ю-ди! А низзя ли сделать кой-чего навроде [CODE=язык], где язык = {c,c++,pascal,perl,prolog,python,lisp,asm,java,delphi,vb,eiffel,TeX,LaTeX,sgml,xml,[x]html,bash, csh,tcsh,zsh,vimrc,passwd,inittab,httpdconf... ad infinitum}. А то у нас в Unix разношерстные коды бывают порою...
                                          Сообщение отредактировано: Ho Im -
                                            У всех создаваемых подсветок есть код подсветки. Пока в наличии пять подсветок.
                                            [code=cpp] - Visual C++
                                            [code=bcb] - C++ Builder
                                            [code=pas] - Pascal, Delphi
                                            [code=vba] - Visual Basic
                                            [code=C#] - .NET C#
                                            [code=no] - Подсветка отключена
                                              Прошу уточнить в ФАКе по подсветке,
                                              каким образом задавать ЛЮБУЮ желаемую подсветку!
                                              Например, если в одной мессаге постятся подряд кусочки на разных языках.
                                              И как задать тег [ CODE ] вообще без подсветки.
                                                ФАК по подсветке, он же в форуме модераторов. А другого я не знаю.
                                                  просто напоминаю, что такие вопросы должны быть освещены...
                                                    Ну в этой теме я уже осветил. Можно конечно и в другой теме, более сжато, без нашего обсуждения?
                                                    Могу только добавить, что если в подсветке не хватает какого-нить зарезервированного слова, то участники могут обратиться к модератору этого раздела. Не нужно для этого писать в книгу жалоб и предложений. Также если в теме с подсветкой вы увидели ошибку, вроде error in post_parser.php это значит, что сейчас модератор что-то добавляет в правила подсветки и немного ошибся. Не нужно пугаться этого и опять же писать в книгу жалоб, просто подождите пять мин и модератор все исправит.
                                                      Цитата
                                                      vot, 1.07.04, 09:54
                                                      И как задать тег [ CODE ] вообще без подсветки.

                                                      просто задаёшь и всё. Тогда текст будет раскрашиваться текущей для раздела подсветкой, если она есть.
                                                        Цитата
                                                        Song, 2.07.04, 09:45
                                                        просто задаёшь и всё.

                                                        Млин, я НЕ СПРАШИВАЮ, как это делать!
                                                        Я напомнил, чтоб не забыли об этом в ФАКе сообщить.
                                                          Ладно, не ругайтесь.
                                                          Вот тут гляньте: FAQ (часто задаваемые вопросы) (сообщение #395149) :)
                                                            Цитата
                                                            Jin X, 4.07.04, 23:42
                                                            Вот тут гляньте: FAQ (часто задаваемые вопросы) (сообщение #395149)
                                                            Ты привел примеры бейсика, си шарпа, асма, но не задал код подсветки в теге кода.
                                                              Базаришь :)
                                                              Fixed.
                                                                У меня готова версия 2.0 подсветки :D
                                                                Нужно только красоту на алгоритм навести
                                                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                                0 пользователей:
                                                                Закрыто Song 21-07-2004: Обсуждение в http://forum.sources.ru/index.php?showtopic=59693


                                                                Рейтинг@Mail.ru
                                                                [ Script execution time: 0,0684 ]   [ 15 queries used ]   [ Generated: 2.05.24, 15:17 GMT ]