2013-06-17 4 views
0

У меня есть язык, специфичный для домена, с которым я хотел бы взаимодействовать с C#, добавляя новые ключевые слова (или синтаксис с некоторым ключевым словом). Использование атрибутов было бы недостаточным (я не могу использовать их в телах методов), а привязка его к «правильной» нотации C#, которая компилируется во что-то еще, была бы уродливой и разрушала бы аналогию с DSL (и перевод с DSL-подобных нотация на C# нетривиальна, поэтому просто писать C# каждый раз не может быть и речи).Добавить ключевое слово на C# с генерацией кода?

У меня уже есть способ проанализировать файл .cs и преобразовать его в законный, нетривиальный код C#, который можно скомпилировать.

Проблема заключается даже в том, что я могу выполнять всю работу по определению DSL, анализировать его и переводить в действительный C#, Visual Studio не позволит мне использовать нотацию, которую он не понимает; он просто добавляет красные squiggles, испускает ошибку «не может разрешить символ», а затем часто не удается правильно разбирать вещи после нее.

Есть ли способ заставить визуальную студию игнорировать конкретные строки в своем анализе? Я смотрел визуальные плагины студии, но, похоже, хотя я могу делать подсветку синтаксиса и другие вещи, я не могу заставить его игнорировать то, что он не знает, как разбираться (если только я не пропустил какой-то способ сделать это что в API расширения, что, безусловно, возможно).

Я просмотрел материал Roslyn и не вижу в этом никакого способа сделать это. (Опять же, может быть что-то отсутствует, это, кажется, не имеют большой документации.)

+2

Вы не можете заставить VS понять ваш синтаксис C#, потому что это, ну, не действительный синтаксис C#. Это ваш DSL, а не C#. Вы можете изменить расширение своего файла, чтобы убедить VS, что это не файл C#, и определить плагин синтаксического ярлыка для этого нового языка. – dasblinkenlight

+0

Я не хочу, чтобы он понял синтаксис - у меня есть процесс предварительной сборки, который его понимает. Я хочу, чтобы он * игнорировал * синтаксис. – Xrm

+0

Изменение расширения должно сделать трюк: VS проигнорирует синтаксис вашего файла, рассматривая его как текст. – dasblinkenlight

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^