Алгоритм построения Томпсона и RE в NFA

Я пытаюсь создать метод, который будет принимать строку (действительное регулярное выражение) и выводить соответствующий недетерминированный конечный автомат. Из проведенного мной исследования следует, что алгоритм Томпсона наиболее применим здесь, поскольку Я буду обрабатывать только символы звезды Клини, союза и круглых скобок, а язык будет только {a, b, e}, где e представляет собой пустой переход.

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

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


person GregH    schedule 16.02.2015    source источник
comment
В этом репозитории вы можете найти Java-реализацию конструкции Томпсона: github.com/meghdadFar/regex.   -  person MAZDAK    schedule 30.11.2016
comment
Сначала из регулярного выражения создается NFA, затем входная строка сопоставляется с этим NFA.   -  person MAZDAK    schedule 30.11.2016


Ответы (1)