ГлавнаяСтатьиПроектыФотографияМатериалыКарта узлаО себеКарта сайтаНовости(версия для печати)

PHP-сценарий для синтаксического оформления кода на языке C++

За основу данного сценария взят исходный код утилиты code2xml, текст которой можно скачать с сайта . В настоящий момент проект заморожен, так как потерял актуальность. Для синтаксической подсветки текстов на формальных языках используйте промышленно признанный пакет .

Загрузить

 
•
 code2html.zip (2.44 Кбайт) v0.1 (zip-архив)

Описание

Подключите модуль «code2html.php» и вызывайте функцию CppConvert ( $Code, $Format ). С помощью значения «pre» параметра $Format, можно указать, что обрабатываемый код необходимо разместить в отдельном абзаце с применением элемента

.
Для синтаксического оформления функция CppConvert выделяет лексемы языка С++ и обрамляет их элементами:

 
•
 
•
 
•
 
•
 
•
 
•

В структуре $c2hConf хранятся стили оформления каждого из перечисленных элементов.

Пример работы

В php-документе пишем строки:

В итоге получаем на выходе получается следующий размеченный текст:

// Шаблонный прототип свойства с доступом чтение/запись
template
<
    class Owner,
    class T,
    T     (Owner::*Getter) (),
    void  (Owner::*Setter) ( T )
>
struct PropertyRW_
{
            Property ( Owner & owner ): owner_ ( owner ) {}
            operator    T  ()       { return (owner_.*Getter) (); }
    T       operator    () ()       { return (owner_.*Getter) (); }
    void    operator =  ( T value ) { (owner_.*Setter) ( value ); }
    Owner & owner_;
};

// Макрос свойства с доступом чтение/запись
#define PropertyRW(Name, Owner, T, Setter, Getter) \
PropertyRW_ Name () \
{ \
    return PropertyRW_(*this); \
}

Благодаря такому небольшому сценарию, очень удобно сопровождать материалы статей в формате HTML. Поначалу все фрагменты кода на C++ на данном сайте были оформлены с помощью code2html. Но я рекомендую использовать промышленно признанный пакет , который содержит цветовые схемы для более чем 50 формальных языков.

18 февраля 2005—15 марта 2006
Максим Проскурня
© 1997–2009 AxoFiber, axofiber.org.ru