Вопрос к себе, чтобы узнать, можно ли что-то решить с помощью регулярных выражений, - Can I draw a finite automata (state machine) for this problem
. Помните, что у автоматов нет возможности хранения.
Теперь давайте посмотрим на подстроку, которая имеет здесь вложенную структуру из вашего примера: (a (a b))
Как вы можете написать generic
конечный автоматы для этого сценария? Под generic
я имею в виду, как автоматы remember
сколько раз встречалась открывающая скобка, чтобы иметь равное количество совпадающих закрывающих скобок по определенному шаблону?
И вот почему этот шаблон строки не может быть анализируется с использованием just
только регулярного выражения.
И для этой проблемы, в частности, поскольку она настолько проста, я просто перебрал бы строку, сохраняя стек, чтобы отслеживать скобки, и символы кавычек, чтобы разобрать его сам .