Хороший парсер-генератор (думают lex/yacc или antlr) для.NET? Время изготовления только? [закрытый]

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

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

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

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

Удача и счастливое кодирование.

21
задан Eric Schoonover 20 August 2009 в 12:16
поделиться

5 ответов

Хммм, вы уже упомянули Antlr, поэтому я не уверен, почему вы его не рассматриваете ...

Antlr генерирует C # ( http://www.antlr.org/ wiki / display / ANTLR3 / Antlr% 2B3% 2BCSharp% 2BTarget ) и имеет лицензию BSD ( http://www.antlr.org/license.html ), которая, кажется, имеет очень мало ограничений. .


Irony ( http://irony.codeplex.com/ ) имеет большое количество загрузок и (простую для глаз) лицензию MIT. Похоже, что имеет полный исходный код, поэтому его можно "встроить" прямо в ваше приложение.

8
ответ дан 29 November 2019 в 21:41
поделиться

ANTLR имеет компонент среды выполнения, но вы всегда можете взять несколько классов, которые он использует, и включить их в свой проект, после чего вам больше не нужно ссылаться на сборку среды выполнения. Он под лицензией BSD - пункт 3 для цели C # 3 и пункт 4 для цели C # 2.

3
ответ дан 29 November 2019 в 21:41
поделиться

Я только что обнаружил, что F # поставляется с реализацией yacc и lex. Похоже, я смогу использовать этот генератор парсеров для своих нужд .NET.

Примеры F #

В примере анализа показано, как использовать инструменты fsyacc и fslex для создания парсеров и лексеров для использования с F #. (Режим: Скомпилированный, Запускается: любой интерфейс командной строки, включая Mono)

Соответствующие сообщения в блоге:

9
ответ дан 29 November 2019 в 21:41
поделиться

Лично я большой поклонник GOLD Parser Generator . Он не генерирует никакого кода напрямую, он просто предоставляет вам таблицы состояний DFA и LALR и позволяет вам написать собственный механизм синтаксического анализа в соответствии с вашими потребностями.

Такой способ структурирования не подходит всем и не во всех ситуациях (вы теряют некоторую гибкость, поскольку ваш язык должен соответствовать ограничениям LALR), поэтому я не утверждаю, что это "правильный путь", но мне понравилось отделение алгоритма синтаксического анализа от правил синтаксического анализа (и это действительно означает, что любые требования времени выполнения полностью и легко под вашим контролем).

Конечно, у вас нет для написания собственного движка - на сайте, например, есть три движка, написанных на C # . Без ведома я не знаю, какие лицензии используют эти движки, но написание собственного движка откровенно тривиально, если вам не нравятся лицензии. GOLD включает в себя документацию, которая дает полное описание рабочего алгоритма, который (как и следовало ожидать, если вы разбираетесь в LALR), является простой системой конечного автомата. Сама программа GOLD, конечно, бесплатна.

GOLD также включает IDE для написания грамматики вашего языка, что может быть весьма полезно.

4
ответ дан 29 November 2019 в 21:41
поделиться
Другие вопросы по тегам:

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