2010-10-25 8 views
7

Я перехожу к этому в своем классе теории, и мне любопытно, сколько людей здесь знают, что такое составление регулярных выражений на самом деле is. Я смотрел онлайн, и мне кажется, что это более архаичная тема, о которой я думал.Из любопытства, сколько людей здесь знают, как скомпилированы регулярные выражения?

Итак, кто здесь знал, прежде чем читать этот вопрос, что компиляция регулярного выражения выполняется путем преобразования регулярного выражения в эпсилон-недетерминированный конечный автомат? Кто не знает, что это?

+3

Возможно, лучше на [Programmers] (http://programmers.stackexchange.com) из-за опроса программистов, а не на вопросе с запросом на программирование. – dmckee

+0

Ну, я не думаю, что они тоже захотят задать этот вопрос. «Кто этого не знает?» довольно сложно ответить осмысленно ... – Jens

+1

На самом деле большинство реализаций на самом деле * не * компилируются на конечные автоматы. Большинство используемых на данный момент диалектов могут соответствовать языкам, которые не являются регулярными (и, следовательно, не могут быть сопоставлены конечным автоматом). – sepp2k

ответ

0

В C есть очень простой и элегантный небольшой компилятор регулярных выражений, который написал Роб Пайк, и Брайан Керниган описывает в главе 1 Beautiful Code О'Рейли. С этим легко учиться. К ним также относятся курсы компилятора: типы токенов могут быть определены с помощью регулярных выражений. Поэтому я полагаю, что это знание не очень редко.

+0

Это был интерпретатор обратного отсчета - он не компилился в автомат. –

0

Хорошо. Я предполагаю, что я буду первым, кто признает это, хотя пару лет назад я взял курс компилятора и знаю общий принцип, я думаю, что мне нужно снова выпустить «Драконную книгу» и еще раз прочитать по этому вопросу, если бы меня попросили написать код, который делает подобное.

0

Я знал, что это как-то связано с конечными автоматами, но ничего кроме этого. Не совсем предмет, в который я хотел вникать ... Я подозреваю, что это неприятно под капотом. Не так много людей на SO, как обычно используют регулярные выражения, никогда не понимают, как они работают.