Разбор кода C # для оценки выражений (в основном, реализация Intellisense) - PullRequest
0 голосов
/ 22 апреля 2010

Я пытаюсь оценить код C # по мере его ввода, думайте об этом, как будто я пытаюсь написать IDE.

Итак, человек набирает код, я хочу узнать, какой код он только что написал:

String x = "";

Теперь я хочу зарегистрировать, что x является типом String. И теперь каждый раз, когда пользователь снова вводит x, я хочу показать ему все, что он может сделать с x, в основном, как Visual Studio Intellisense.

Для этого мне понадобятся лексеры или парсеры? Это облегчит? Я слышал, что VS 2010 имеет некоторые особенности, которые Microsoft выпустила. Есть идеи?

Ответы [ 3 ]

0 голосов
/ 22 апреля 2010

Я бы не стал писать это сам, если бы ты мог. SharpDevelop - это .NET IDE с открытым исходным кодом, имеющая функциональность, подобную Intellisense. Я считаю, что вы можете встроить их редактор в свой собственный проект. Согласно Википедии, лицензия - LGPL, так что вы можете использовать ее даже в проектах с закрытым исходным кодом. Конечно, вы должны убедиться в этом сами.

Actipro SyntaxEditor - это сторонний элемент управления, который вы можете купить и который делает это. Есть WinForms и WPF версии элемента управления. Это хорошо сработало для нас. В настоящее время он не поддерживает Intellisense с LINQ и лямбда-выражениями. Я не знаю, поддерживает ли SharpDevelop это или нет.

0 голосов
/ 22 апреля 2010

Я не думаю, что .NET 4 может помочь с этим. Вы можете посмотреть на Mono REPL . Также может помочь, если вы дадите более подробную информацию о том, что вы на самом деле хотите сделать.

0 голосов
/ 22 апреля 2010

Вы можете использовать DLR, чтобы помочь с этим. См. DLRPad на codeplex для примера

Если вы используете типы запросов DLR в CLR проще, чем использование отражения в C #. в последний раз, когда я смотрел (около 9 месяцев назад), я думал, что intellisense был реализован с использованием этой техники, поскольку мы собирались сделать это таким же образом.

...