Можно ли использовать лексеры/парсеры ANTLR для подсветки синтаксиса VS и списка ошибок?

Я с удовольствием разрабатываю язык в ANTLR 4.4 / ANTLR4CS, и я хотел бы начать интегрировать свой язык в IDE. Естественным местом для меня кажется интеграция его в Visual Studio. Мне приходит в голову, что кто-то мог найти общий способ подключения лексера ANTLR к системе подсветки синтаксиса Visual Studio или парсеров ANTLR к задаче MSBuild, чтобы ошибки отображались в списке ошибок Visual Studio.

Существует ли какая-либо отправная точка, базовый пакет, система плагинов или что-то подобное, позволяющее интегрировать язык ANTLR4CS с механизмами языковой поддержки Visual Studio?

В качестве альтернативы, кто-нибудь добился успеха в создании, скажем, системы сборки/определения языка Sublime Text автоматически из своей грамматики?


person Steve Cooper    schedule 23.11.2014    source источник
comment
Я сделал это, каждый раз повторно анализируя весь файл, делать это на построчной основе было слишком много PITA для моих нужд (и наши файлы DSL маленькие, поэтому он работает нормально). Что касается вывода ошибок, что вы делаете с вводом после его анализа и какие интерфейсы VS реализуете?   -  person Lucas Trzesniewski    schedule 29.11.2014
comment
Спасибо, Лукас. Я ожидаю, что мои файлы будут достаточно малы, чтобы использовать тот же ярлык. Что касается вывода ошибок, я просто хотел сшить синтаксические ошибки, поднятые синтаксическим анализатором, в окно ошибок. Я еще не написал никакого кода VS, потому что на данный момент мне нужно многому научиться.   -  person Steve Cooper    schedule 30.11.2014
comment
В ПОРЯДКЕ. Я не знаю, подойдет ли он для ваших нужд, но вы можете реализовать генератор одного файла из расширения VS. Метод Generate принимает IVsGeneratorProgress параметр, который позволяет легко сообщать об ошибках.   -  person Lucas Trzesniewski    schedule 30.11.2014
comment
Похоже, это действительно полезная зацепка! Хотите переписать как ответ, и я могу дать вам очки.   -  person Steve Cooper    schedule 01.12.2014


Ответы (1)


@ Лукас Тржесневски написал:

Я сделал это, каждый раз повторно анализируя весь файл, делать это на построчной основе было слишком много PITA для моих нужд (и наши файлы DSL маленькие, поэтому он работает нормально).

Я не знаю, подойдет ли он для ваших нужд, но вы можете реализовать один генератор файлов из расширения VS. Метод Generate принимает параметр IVsGeneratorProgress, который позволяет легко сообщать об ошибках.

person Community    schedule 22.05.2015