Вопрос

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

Предпочтительны C / C ++ и Python, но интересны и другие языки.

Это было полезно?

Решение

re2c генерирует C-код.Я не уверен, что вы подразумеваете под "динамически" - AFAIK, вам пришлось бы скомпилировать и динамически загрузить выходные данные, если вы хотите вызвать сгенерированный код во время того же запуска, когда вы его сгенерировали.

Другие советы

Ражель возможно, это то, что вы ищете.

Он генерирует код на C / C ++ / D / Ruby / Java для конечных автоматов.Они описываются с использованием как регулярных выражений, так и операторов.

Проверьте веб-сайт, его главная страница довольно откровенна.

Возможно, это не совсем то, что вы ищете, но Xerox Finite State Transducer поддерживает регулярные выражения, выполняет сборку устройства и даже может создавать графическое представление с помощью GraphViz.

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

Два предостережения:он использует свой собственный синтаксис, поэтому его необязательно будет легко перевести на выбранные вами языки, и я почти уверен, что вам нужно получить на это лицензию.Она прилагается к книге Карттуннена и Бизли "Морфология конечных состояний", которая сама по себе является очень интересным чтением.

В Утилиты конечных автоматов поддерживает генерацию FSM из регулярных выражений.Он также поддерживает генерацию кода на C, C ++ и Java для FSM.Он поддерживает динамическую генерацию, но написан на Prolog, и вызов с другого языка может вызвать проблемы.

То, о чем вы просите, - это лексер...Их предостаточно для множества языков программирования.Для начала вы можете взглянуть здесь.

Хорошей реализацией Python для преобразования регулярного выражения в конечный автомат является https://github.com/ferno/greenery.Он доступен на pypi через "pip install greenery".

Другой пакет python использует greenery для реализации итеративных анализаторов:Анализатор и создатель протокола связи Python https://github.com/pjkundert/cpppo.Это также доступно через "pip install cpppo".Cpppo, к сожалению, довольно сложен, в немалой степени из-за попытки поддерживать оба Python 2 и 3 в одном исходном коде, включая полную совместимость с UTF-8.

В любом случае, cpppo должен дать вам представление о том, как применить превосходное регулярное выражение greenery к FSM converter.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top