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

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

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

Загрузить

 
 code2html.zip (2.47 Кбайт) v0.2 (zip-архив)

Описание

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

 
<keyword>
 
<number>
 
<string>
 
<char>
 
<preprocessor>
 
<comment>

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

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

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

<?php
include_once ( "code2html.inc" );
 
print = CppConvert ( "
// Шаблонный прототип свойства с доступом чтение/запись
template
<
    class Owner,
    class T,
    T     (Owner::*Getter) (),
    void  (Owner::*Setter) ( T )
>
struct PropertyRW_
{
            Property ( Owner &amp; owner ): owner_ ( owner ) {}
            operator    T  ()       { return (owner_.*Getter) (); }
    T       operator    () ()       { return (owner_.*Getter) (); }
    void    operator =  ( T value ) { (owner_.*Setter) ( value ); }
    Owner & owner_;
};
 
// Макрос свойства с доступом чтение/запись</code>
#define PropertyRW(Name, Owner, T, Setter, Getter) \
PropertyRW_&lt;Owner, T, &Owner::Setter, &amp;Owner::Getter> Name () \
{ \
    return PropertyRW_<Owner, T, &Owner::Setter, &Owner::Getter>(*this); \
}
", "none" );
?>

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


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

18 февраля 2005—28 февраля 2009
Максим Проскурня
© 2005–2009 AxoFiber@Home, axofiber.no-ip.org
© 1997–2009 AxoFiber, axofiber.org.ru