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

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

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

Загрузить

Описание

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

В структуре $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
Максим Проскурня
© 1997–2017 Axofiber