2014-04-25 7 views
0

Я пытаюсь сделать лексический парсер для вычисления всех решений с учетом термина EBNF. Например:ANTLR парсер для грамматики EBNF и получить дерево декомпозиции с результатами

Грамматика:

T :: = ноль | A.T | (T + T) | (T * T)

A :: = a | b | c | d | е

Операторы:

* исключающее ИЛИ

. Последовательность

+ Parallel

Символы:

ABCDE

термина Пример:

а (Ь + с) (д * е)

.. Расчетный термин:

Computed term

Ожидаемый результат дерева:

Solution tree

Решение должно быть все ветви дерева.

Вопрос в том, что будет оптимальным для этого?

На данный момент я хочу, чтобы пользователь ANTRL создал дерево разбора грамматики.

Но я не очень уверен, как сделать подход рефакторинга для вычисления термина.

Спасибо!

ответ

0

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

Итак, обновление будет. Определить алгоритм в виде конечного автомата с помощью одной из этих моделей

Python finite state machine

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

Итак, кто-нибудь знает, что было бы оптимальным решением для анализа и обработки термина, подобного выражению EBNF? то есть с использованием ANTLR?

Cheers.

 Смежные вопросы

  • Нет связанных вопросов^_^