Я хочу написать редактор в моем плагине Eclipse, который может обрабатывать язык моего инструмента.Язык основан на C / C ++ с дополнительными ключевыми словами и аннотациями.Я успешно написал свой собственный класс Language, который расширяет GPPLanguage и использует соответствующую точку расширения CDT.
Основная проблема, с которой я сталкиваюсь, состоит в том, что мой язык имеет keywords inside comments
.
.часто используется такой язык:
/** @ctPrint
*
* This is a real comment, describing this block.
*
* @author Sadik // This looks like a comment, but it's part of the syntax. The compiler will treat this in a special way.
* @tag CT-001 // The @tag is part of syntax, the real comment starts with //
* @result TRUE // Again, @result is part of the syntax.
*
* This is a final description.
*/
Так что некоторые части внутри комментариев не обрабатываются моим компилятором как комментарии (расширяющие g ++).Вот почему я хочу отобразить эти части внутри затмения с подсветкой.
Насколько я понимаю из , этот ответ заключается в том, что первым, кто станет активным во время обработки необработанного исходного кода, будетЛексер.Это часть документации CDT Lexer:
Короче говоря, этот класс преобразует окончания строк (в '\ n') и триграфы
(в соответствующие им символы), удаляет сращения строк, комментарии и пробелы, кроме новой строки.Возвращает токены препроцессора.
Таким образом, Lexer выбрасывает части моего исходного кода и не маркирует его.Поскольку Lexer объявлен финальным, он не предназначен для его расширения и повторного использования.
Если у меня есть парсер, который расширяет CDT GNUCPPParser
, этот парсер не сможет «увидеть» мои комментарии, потому что естьдля них нет жетонов.Как я могу получить токены для этой части?