Библиотека разбора текста - PullRequest
1 голос
/ 10 февраля 2011

Мой коллега работает над универсальной библиотекой синтаксического анализа текста, основанной на C # lambdas.Ядро выглядит круто, но, к сожалению, он жестко закодировал грамматику, характерную для его личной задачи - оценки математических выражений.Поэтому я не буду использовать его так, как планировал до того, как увидел API.И теперь я ищу другую библиотеку, которая отвечает хотя бы некоторым моим требованиям.Он должен:

  1. Уметь загружать грамматику из внешнего файла - скажем, XML, YML или JSON.
  2. Возвращать AST из грамматики ипроанализированное дерево, построенное из любого текста.
  3. Работайте достаточно быстро, чтобы загрузить грамматику C # и затем проанализировать большой файл кода.

Я бы предпочел, чтобы библиотека с файлом формата грамматики была простойдостаточно для простого написания грамматики для математических выражений, является открытым исходным кодом и написана на C # или C ++.

С уважением,

- ОБНОВЛЕНО: пункт 2 исправлен.

1 Ответ

1 голос
/ 10 февраля 2011

Вы можете проверить Text Transformer , который претендует на звание универсального языка обработки текста. У меня нет особого опыта с этим.

Создание надежных языковых интерфейсов и используемых инструментов обработки - это действительно много работы. Если вы хотите обрабатывать компьютерные языки общим способом, вы можете рассмотреть наш DMS Software Reengineering Toolkit , своего рода обобщенную технологию компилятора для анализа, анализа, преобразования и / или генерации кода (или любого другого вида официального документа).

DMS будет принимать произвольные контекстно-свободные грамматики для языков, автоматически создает AST без дополнительных усилий по спецификации с вашей стороны и предназначена для обработки не только больших файлов, но и очень больших наборов файлов за одно вычисление. Обычно люди для обработки кода требуется распознавание образов, анализ кода и возможности преобразования кода; В DMS есть все эти встроенные функции. Также имеется множество предопределенных зрелых грамматик для широкого спектра компьютерных языков, хорошо известных (C, C ++, C #, COBOL, Java, JavaScript, ...) и других (Natural , EGL, Python, MATLAB, ...), и использовался для проведения массовых автоматических анализов и преобразований программ в этих различных языках.

DMS не соответствует вашим требованиям к реализации с открытым исходным кодом или C # / C ++. Он реализован как набор предметно-ориентированных языков для описания грамматик, анализаторов, преобразований, prettyprinters и сценариев, что позволяет выполнять параллельное выполнение, позволяя выполнять сложные анализы быстрее, чем однопоточные программы.

...