Лучший синтаксический анализатор для C#? [закрытый]

Много людей здесь предложило введения и всесторонние практические руководства, которые являются всей пользой для сообщения Вам, как сделать то, что Вы хотите.

, Кроме того, я дал бы три совета для новичка о том, как знать то, что Вы хотите:

1) Управление версиями ВСЕ (то есть, все Вы пишете).

Управление версиями файлы проекта. Управление версиями Ваши тестовые сценарии. Управление версиями любые небольшие сценарии Вы используете для копирования вещей вокруг. Управление версиями Ваш список ожидающих выполнения задач. Определенно управление версиями Ваши примечания дизайна. Как только Вы знакомы с командами, которых это ничему не стоит, и однажды Вы будете радоваться истории файла, который Вы никогда не предполагали должными быть откатывать.

2), Когда Вы будете довольны изменением, регистрируйте его сразу. И регистрируйте все это.

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

3) при достижении этапа отметьте его.

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

6
задан skevar7 27 August 2009 в 02:52
поделиться

4 ответа

Ознакомьтесь с проектом ANTLR. http://www.antlr.org/

Вы можете получить грамматику C # отсюда: http: // www. antlr.org/grammar/list

2
ответ дан 17 December 2019 в 02:31
поделиться

Ознакомьтесь с синтаксическим анализатором Metaspec C # :

синтаксический анализатор Metaspec C # полностью совместим с ECMA-334 и ECMA-335 стандарты. Кроме того, он поддерживает Специальные расширения Microsoft. За подробности о библиотеке парсера C #, см. онлайн-документацию (C # редакция или редакция C ++).

C # 3.0 поддерживаемые функции:

  • новый алгоритм вывода типа C # 3.0
  • неявно типизированные локальные переменные
  • инициализаторы объектов
  • инициализаторы коллекций
  • выражения создания анонимных объектов
  • лямбда-выражения
  • анонимные типы
  • расширение методы
  • выражения запросов
  • частичные методы

Возможности, поддерживаемые C # 2.0:

  • обобщенные типы
  • типы, допускающие значение NULL
  • анонимные методы
3
ответ дан 17 December 2019 в 02:31
поделиться

Зависит от того, что вы оптимизируете.

Если вы оптимизируете возможность преобразования C #, см. C # Front End для синтаксического анализатора, который обрабатывает C # 1.2, 2.0 и 3.0 (включая синтаксис LINQ). Интерфейс C # построен на основе DMS Software Reengineering Toolkit , который обеспечивает синтаксический анализ, автоматическое построение AST, поддержку таблиц символов, преобразование программы из исходного кода в исходный с использованием синтаксиса уровня исходного кода с шаблонами и AST вернуться к исходному тексту prettyprinting. Если вы хотите преобразовать код C #, это инструмент для этого. (DMS также используется для анализа и преобразования кода на Java, C, C ++, JavaScript, COBOL и многих других языках).

Если вы оптимизируете с открытым исходным кодом, это не тот инструмент, который вам нужен.

0
ответ дан 17 December 2019 в 02:31
поделиться

Я рекомендую хотя бы взглянуть на проект LINQOverC #, размещенный на codeproject.com.

URL: http://www.codeplex.com/LinqOverCSharp

Есть некоторые (незначительные?) известные проблемы, и он не обновлялся с января 2008 года (что может быть довольно большой проблемой), но исходный код для (быстрого и 100% .Net) C # Пригоден синтаксический анализатор 3.0.

Мои любимые особенности этого синтаксического анализатора:

  1. Он может загружать файл проекта Visual Studio (csproj) практически сразу из коробки и анализировать весь пакет (включая ссылки на сборки).

  2. Вы можете запрашивать, перечислять, фильтровать и т. Д. Анализируемую объектную модель (дерево) с помощью LINQ. Это делает почти тривиальным перемещение вверх и вниз и вокруг всего, что вы анализируете.

Вот пример запроса LINQ для поиска переменной или параметра в методе, где имя переменной = VariableName:

variable = (from v in method.Variables
                            where string.Compare(v.Name, VariableName, false) == 0
                            select v as LanguageElement).Union(
                              from p in method.FormalParameters
                              where string.Compare(p.Name, VariableName, false) == 0
                              select p as LanguageElement).FirstOrDefault();
1
ответ дан 17 December 2019 в 02:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: