Автор Тема: Подсветка синтаксиса 1С на PHP  (Прочитано 3456 раз)

Berserker

  • Sr. Member
  • ****
  • Сообщений: 254
    • Просмотр профиля
Подсветка синтаксиса 1С на PHP
« : Ноябрь 17, 2012, 07:41:19 pm »
Размер: 30.9 KiB
Ссылка: Скачать
Демо: Перейти (Двойной щелчок по раскрашенному коду выделяет его)
Требования: PHP 5.3+, расширение Multibyte String.
Производительность: 2500 строк/сек. на Intel Pentium 4, 3.00 GHz, PHP 5.3.6, Windows XP.
Примеры раскраски: monokai, visual studio
Идея реализации: cyberforum.ru.

Особенности:
  • Работает с кодировкой Windows-1251. Может понадобиться обёртка для преобразования в/из Windows-1251 до раскраски и после.
  • Полностью поддерживается двуязычность.
  • Используется лексический анализатор, а не регулярные выражения.
  • Подсветка следующих видов лексем: строка, комментарий, число, идентификатор, зарезервированное слово, имя новой функции, глобальный идентификатор, метка, директива компиляции, инструкция препроцессора, дата, оператор, неизвестный символ.
  • Распознаются все идентификаторы глобального контекста языка 1С, а также встроенные функции и ряд типов данных. Различаются встроенные функции и пользовательские переменные с такими же именами.
  • Настройка раскраски осуществляется средствами css.
  • Код разметки очень компактный за счёт использования сокращённых имён классов: a0..z9. Возможно использование пользовательских имён классов.
  • Есть возможность преобразования табов в фиксированное количество пробелов или использование умных отступов (smart indentation).
  • Возможность не подсвечивать обычные идентификаторы снижает размер итогового HTML кода в ~2.5 раза.

Пример использования:
Код: (php) [Выделить]
require_once('1c.php');
$H = new B2Lib\Highlighter1C();
echo($H->Highlight($Code));

Настройка раскраски:
  • У экземпляров класса B2Lib\Highlighter1C есть ряд настраиваемых параметров:
    • $TabsToSpaces  = true; // Заменять ли табы пробелами
    • $TabSize  = 4; // Количество пробелов в табе: 0..32
    • $SmartIdent  = false; // Умный отступ: динамический размер табов
    • $MarkIdents  = false; // Подсвечивать ли обычные идентификаторы
    • $Styles  = array(...); // Массив имени стиля => имени класса css
  • Доступные имена стилей: string, comment, number, ident, resword, function, global_ident, label, directive, preprocess, date, operator, char
  • Статические массивы (имя => true) $ResWords, $GlobalIdents и $GlobalFuncs доступны для пополнения новыми идентификаторами

Содержимое архива highlighter_1c.rar:
  • src\ - Содержит исходные коды модулей раскраски
  • monokai.css - Пример шаблона раскраски
  • visual studio.css - Пример шаблона раскраски
  • example_monokai.html - Пример раскраски
  • example_visual_studio.html - Пример раскраски
  • index.html - Форма для демонстрации
  • template.html - Шаблон странички, генерируемой демо-скриптом
  • 1c.php - Объединённые в один файл модули раскраски
  • highlight.php - Демонстрационный скрипт

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Подсветка синтаксиса 1С на PHP
« Ответ #1 : Ноябрь 18, 2012, 08:07:07 am »
Berserker, выкладывайте на http://infostart.ru/
Получите кучу тестеров, замечаний, пожеланий и баллов  ;)

Berserker

  • Sr. Member
  • ****
  • Сообщений: 254
    • Просмотр профиля
Re: Подсветка синтаксиса 1С на PHP
« Ответ #2 : Ноябрь 18, 2012, 11:37:49 am »
Спасибо за совет.

Berserker

  • Sr. Member
  • ****
  • Сообщений: 254
    • Просмотр профиля