2010-10-25 6 views
7

Sto andando oltre nel mio corso di teoria, e sono curioso di sapere quante persone qui sanno che la compilazione di espressioni regolari in realtà è. Ho guardato online e mi sembra che questo sia un argomento più arcaico che pensavo fosse.Per curiosità, quante persone qui sanno come vengono compilate le espressioni regolari?

Quindi sì, chi sapeva prima di leggere questa domanda che una compilazione di espressioni regolari viene eseguita convertendo la regex in un automone finito non deterministico epsilon? Chi non ha idea di cosa sia?

+3

Forse meglio su [Programmers] (http://programmers.stackexchange.com) per il fatto di essere un sondaggio di programmatori piuttosto che una domanda con una risposta di programmazione. – dmckee

+0

Beh, non penso che vorrebbero neanche questa domanda. "Chi non lo sa?" è piuttosto difficile rispondere in modo significativo ... – Jens

+1

In realtà la maggior parte delle implementazioni in realtà * non * compilano su automi limitati. La maggior parte dei dialetti regex in uso oggi può abbinare linguaggi che non sono regolari (e quindi non potrebbero essere confrontati con un automa finito). – sepp2k

risposta

0

C'è un semplice ed elegante compilatore di espressioni regolari in C che Rob Pike ha scritto e Brian Kernighan descrive nel Capitolo 1 di O'Reilly's Beautiful Code. È abbastanza facile da imparare. Anche i corsi del compilatore lo riguardano: i tipi di token possono essere definiti con espressioni regolari. Quindi immagino che questa conoscenza non sia terribilmente rara.

+0

Quello era un interprete di backtracking: non compilava un automa. –

0

Ok. Immagino che sarò il primo ad ammettere che, anche se ho seguito un corso di compilatore un paio di anni fa e ne conosco il principio generale, penso che avrei bisogno di tirare fuori di nuovo il "Libro del Drago" e leggerne altri sull'argomento se mi fosse stato effettivamente chiesto di scrivere il codice che fa questo genere di cose.

0

Sapevo che aveva qualcosa a che fare con macchine a stati finiti, ma niente oltre. Non proprio un argomento su cui volevo approfondire ... Sospetto che sia brutto sotto il cofano. Non molte persone su SO sembrano usare le espressioni regolari, non capisco come funzionano.