gifts2017

Подсветка синтаксиса 1С на PHP (Highlight 1C on PHP)

Опубликовал Александр Шостак (EtherniDee) в раздел Программирование - Внешние компоненты

Скрипт для компактной раскраски кода (в HTML) на 1С для PHP 5.3+ с поддержкой двуязычности, лексическим разбором и распознаванием идентификаторов глобального контекста и встроенных функций 1С.

Шаблон раскраски

Шаблон раскраски  

Демо: Перейти (Двойной щелчок по раскрашенному коду выделяет его)
Требования: PHP 5.3+, расширение Multibyte String.
Производительность: 2500 строк/сек. на Intel Pentium 4, 3.00 GHz, PHP 5.3.6, Windows XP.
Примеры раскраски: monokai, visual studio.
Идея реализации: cyberforum.ru.

Особенности:

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

Пример использования:

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 - Демонстрационный скрипт

 








Скачать файлы

Наименование Файл Версия Размер
highlight_1c.rar 29
.rar 30,93Kb
18.11.12
29
.rar 30,93Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Кирилл Краснов (kirillkr) 19.11.12 00:16
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа