Это устройство предназначено для доказательства того, что данный язык не может быть определенного класса.
Давайте рассмотрим язык сбалансированных скобок (означающих символы '(' и ')', включая все строки, которые сбалансированы в обычном значении, и ни одной из которых нет. Мы можем использовать лемму прокачки, чтобы показать, что это не регулярно.
(Язык - это набор возможных строк. Парсер - это какой-то механизм, который мы можем использовать, чтобы увидеть, есть ли строка в языке, поэтому он должен быть в состоянии определить разницу между строкой в языке или строка вне языка. Язык является «обычным» (или «не зависящим от контекста» или «чувствительным к контексту» или чем-то еще), если есть обычный (или любой другой) синтаксический анализатор, который может его распознать, различая строки в языке и строки не на языке.)
LFSR Consulting предоставила хорошее описание. Мы можем нарисовать синтаксический анализатор для обычного языка в виде конечного набора блоков и стрелок со стрелками, представляющими символы, и блоков, соединяющих их (действуя как «состояния»). (Если это сложнее, чем это, это не обычный язык.) Если мы можем получить строку длиннее, чем количество блоков, это означает, что мы прошли один блок более одного раза. Это означает, что у нас был цикл, и мы можем проходить через него столько раз, сколько захотим.
Следовательно, для обычного языка, если мы можем создать произвольно длинную строку, мы можем разделить ее на xyz, где x - это символы, которые нам нужны, чтобы получить в начале цикла, y - фактический цикл, а z это все, что нам нужно, чтобы сделать строку действительной после цикла. Важно то, что общая длина х и у ограничена. В конце концов, если длина больше, чем количество блоков, мы, очевидно, прошли через другой блок, делая это, и поэтому есть цикл.
Итак, на нашем сбалансированном языке мы можем начать с написания любого количества левых скобок. В частности, для любого данного синтаксического анализатора мы можем написать больше левых паренсов, чем есть ящиков, и поэтому анализатор не может определить, сколько левых паренсов существует. Следовательно, х - это некоторое количество оставленных паренов, и это исправлено. у - также некоторое количество оставленных паренов, и это может увеличиваться бесконечно. Можно сказать, что z - это некоторое число правильных паренов.
Это означает, что у нас может быть строка из 43 левых и 43 правых, которые распознает наш синтаксический анализатор, но синтаксический анализатор не может отличить это от последовательности из 44 левых и 43 правых парней, чего нет в нашем язык, поэтому синтаксический анализатор не может разобрать наш язык.
Поскольку любой возможный регулярный синтаксический анализатор имеет фиксированное количество ящиков, мы всегда можем написать больше левых паренов, чем это, и по лемме прокачки мы можем затем добавить больше левых паренских кодов таким образом, чтобы синтаксический анализатор не мог их определить. Следовательно, язык сбалансированных скобок не может быть проанализирован обычным синтаксическим анализатором и поэтому не является регулярным выражением.