Что является самым быстрым генератором синтаксического анализатора для вывода C#?

Я ищу инструмент генератора синтаксического анализатора, который дает вывод C# и довольно быстро. Моя цель - проанализировать JSON-подобный текст и создать из него объект CLR. Я использовал движок GOLD Parser для этого, но он оказался медленным для моих нужд. Может ли кто-нибудь предложить мне хороший и быстрый инструмент генератора парсера, который испускает код C#? Я слышал об Иронии и ANTLR, но не имею опыта работы с ними. Они генерируют значительно более быстрый парсер или есть лучшие варианты?

5 ответов

Решение

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

Кроме того, вы также можете использовать SLK Parser Generator (он поддерживает языки C,C++,Java,C#).

Также будьте на связи с этим вопросом.
Он спрашивает об улучшении используемого вами GOLD Parser: [Improve the GOLD Parser]

ANTLR - это LL-парсер, который менее мощный, чем LR-синтаксические анализаторы. Пожалуйста, проверьте, соответствует ли ваш контекстный язык во всех возможных случаях спецификациям LL. Также есть некоторые другие вещи, которые следует учитывать, такие как неоднозначная грамматика, контекстно-свободная или контекстно-зависимая грамматика.etc... лучше сначала оценить ваши потребности с различными типами синтаксических анализаторов ( LL(+),LR(+), CALR(+), LALR(+)) доступно. + означает 1 или более вхождений в будущее. После этого выберите один инструмент генерации синтаксического анализатора этого типа.

ANTLR является анализатором нисходящего потока LL(k). В некоторых случаях он хорош, но не в других, так как мы обрабатываем рекурсивно в самой левой производной. Парсеры, такие как синтаксический анализатор золота, Visual Parse++ ..etc - это парсеры LR(k), которые в основном являются восходящими. В моих исследованиях по оценке различных парсеров мы выбрали парсер LR(k) (визуальный синтаксический анализ ++ был нам полезен), который в целом быстрее в создании дерева синтаксического анализа.

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

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

Надеюсь, поможет. дайте мне знать, если я могу помочь с любой дополнительной информацией.

В.М. Ракеш (rakesh.vm@gmail.com)

Я не могу говорить о производительности, но вы можете попробовать GPLEX/GPPG

Почему бы не использовать сборку в классе JavaScriptSerializer для десериализации JSON?

Общий метод десериализации: http://msdn.microsoft.com/en-us/library/bb355316.aspx

Класс JavascriptSerializer: http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx

Последняя версия JSON.NET способна создавать динамические объекты CLR непосредственно из JSON. Разве это не альтернатива? Конечно, возможна статическая типизация / сериализация.

JSON.NET

Другие вопросы по тегам