Какой класс языков действительно распознает реальные современные регулярные выражения?
Всякий раз, когда существует группа захвата неограниченной длины с обратной ссылкой (например, (.*)_\1
), регулярное выражение теперь соответствует нерегулярному языку. Но этого само по себе недостаточно, чтобы сопоставить что-то вроде S ::= '(' S ')' | ε
- контекстно-свободный язык совпадающих пар паренов.
Рекурсивные регулярные выражения (которые для меня новы, но я уверен, существуют в Perl и PCRE), по-видимому, распознают как минимум большинство CFL.
Кто-нибудь сделал или прочитал какие-либо исследования в этой области? Каковы ограничения этих "современных" регулярных выражений? Знают ли они строго больше или строго меньше, чем CFG, грамматик LL или LR? Или существуют ли оба языка, которые могут быть распознаны регулярным выражением, но не CFG и наоборот?
Ссылки на соответствующие документы будут высоко оценены.