Как я это вижу:
- Обычные языки:
- Подобрано по конечным автоматам. Только одна переменная может использоваться для представления текущего
«местоположение» в грамматике для сопоставления: рекурсия не может быть реализована
- Контекстно-свободные языки:
- Соответствует стековой машине. Текущее «местоположение» в грамматике представлено стеком в той или иной форме. Не может «вспомнить» ничего, что произошло до
- Контекстно-зависимые языки:
- Большинство языков программирования
- Все Большинство человеческих языков
Мне известны парсеры регулярных выражений, которые позволяют вам сравнивать то, с чем парсер уже сталкивался, достигая чего-то вроде контекстно-зависимой грамматики.
Тем не менее парсеры регулярных выражений, какими бы сложными они ни были, не допускают рекурсивного применения правил, что является определенным требованием для контекстно-свободных грамматик.
Термин regex , на мой взгляд, в основном относится к синтаксису , используемому для выражения этих регулярных грамматик (звездочек и вопросительных знаков).