LINUX.ORG.RU

C/C++ Code Highlight


0

0

Есть ли хороший пример для реализации подсветки кода( не такой как в scintilla, а с семантикой ), и возможно ли для этого каким-нибудь боком использовать gcc?

★★★★

Ответ на: комментарий от KRoN73

спасибо за ссылку, но судя по скриншотам семантику он не понимает, на таком уровне подсветка у меня уже реализована

lester ★★★★
() автор топика

Из open source есть неплохой пример - Eclipse CDT. Так как у них свой C++ front-end (написанный на Java), то им есть откуда брать семантику для кода. А вот ни вимеры, ни емаксеры пока не осилили семантическую расцветку кода для плюсов.

Использовать GCC в принципе возможно, но смотря для чего. Для генерации по исходникам html с семанической расветкой, наверное, как-то можно приспособить. А вот чтобы прям в процессе редактирования кода и налету - врядли.

kamre ★★★
()


ммм.. я наверное туплю, но что собственно подразумевается под семантической подсветкой? и чем она отличается от несемантической :-? пару примеров.

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda

struct ccc { int operator() { return 1; } };

.... ccc C; int a = C(); ....

Без семантики - C() - вызов функции, и C будет подсвечено как имя функции вместо имени объекта.

YesSSS ★★★
()

> Есть ли хороший пример для реализации подсветки кода( не такой как в scintilla, а с семантикой )

Посмотри doxygen, хотя точно тебе не скажу семантическая там или нет.

> и возможно ли для этого каким-нибудь боком использовать gcc?

Может что-нибудь на основе http://www.gccxml.org/HTML/Index.html ?

YesSSS ★★★
()
Ответ на: комментарий от YesSSS

> Без семантики - C() - вызов функции, и C будет подсвечено как имя функции вместо имени объекта.

идея в принципе понятна, спасибо. впрочем,по-моему это уже такие мелочи..

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda

Да, это собственно не очень важно при кодинге, а вот втыкания в чужой код может пригодиться. Там где семантическая подсветка - там и до графа вызовов и нормального дебага рукой подать. Imho обычно тут и проходит граница между IDE и редактор+левые плагины.

YesSSS ★★★
()
Ответ на: комментарий от YesSSS

> Посмотри doxygen, хотя точно тебе не скажу семантическая там или нет.

спасибо, посмотрю

> Может что-нибудь на основе http://www.gccxml.org/HTML/Index.html ?


да - тоже нагуглил, надо будет посмотреть насколько оно шустрое

lester ★★★★
() автор топика
Ответ на: комментарий от YesSSS

> doxygen

Не за что бы не поверил, что там семантическая. Там семантическая не нужна (как имхо и в большинстве случаев, отличных от IDE, так что желаю топикстартеру удачи в поиске).

O_o
()

спасибо всем, буду пока смотреть предложенные варианты

lester ★★★★
() автор топика
Ответ на: комментарий от lester

>> Может что-нибудь на основе http://www.gccxml.org/HTML/Index.html ?

>да - тоже нагуглил, надо будет посмотреть насколько оно шустрое

На всякий случай сразу скажу, что шаблоны оно не умеет.

Sectoid ★★★★★
()
Ответ на: комментарий от lester

>Спасибо за ссылку, но судя по скриншотам семантику он не понимает

Was ist «семантику»? Если внутри PHP есть HTML, внутри которого есть JavaScript - он это всё корректно подсветит. Да ещё и синтаксические ошибки несложные поймает. Это семантика или нет? :)

KRoN73 ★★★★★
()
Ответ на: комментарий от YesSSS

>Без семантики - C() - вызов функции, и C будет подсвечено как имя функции вместо имени объекта.

ИМХО, ни один универсальный хайлайтер такого не умеет.

KRoN73 ★★★★★
()
Ответ на: комментарий от YesSSS

>Да, это собственно не очень важно при кодинге, а вот втыкания в чужой код может пригодиться. Там где семантическая подсветка - там и до графа вызовов и нормального дебага рукой подать.

Тут уже хайлайтер поднимается до уровня IDE. И не простой IDE, а с проектами. Ибо определить, класс это или функция нередко только через подгрузку файлов проекта только можно.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Об этом я и написал. =)

Просто без такой функциональности такого рода тулзы особого смысла не имеют, а то получаются всякие indent-ы и ctags-ы, которые работают только в простых случаях а по своему смыслу должны-бы натравливаться на весь проект скопом. Благо эта проблема свойственна не всем языкам, ту же жаву afair можно парсить вообще без неоднозначностей(нет не препроцессора ни перегрузки операторов).

YesSSS ★★★
()

Рекомендую ctags (exuberant-ctags)

irq
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.