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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.