Регулярное выражение в C ++ - PullRequest
3 голосов
/ 27 февраля 2011

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

Кто-нибудь может подсказать, с чего начать.

Ответы [ 6 ]

3 голосов
/ 27 февраля 2011

http://swtch.com/~rsc/regexp/regexp1.html содержит хорошее объяснение двух основных подходов к регулярным выражениям, их компромиссов и того, как сделать более быстрый (DFA) пригодным для использования во многих случаях, когда большинство реализаций не используют их для.

1 голос
/ 27 февраля 2011

Пока вы хотите написать библиотеку, в дополнение к ссылкам на превосходные ресурсы, которые дают другие ответы, вы можете исследовать реализацию спецификации C ++ 0x для регулярных выражений, описанной в главе 28 N3225 .

1 голос
/ 27 февраля 2011

Также стоит заглянуть в книгу «Компиляторы: принципы, методы и инструменты», в которой подробно рассматриваются методы анализа регулярных выражений (и теория, касающаяся DFA и NDFA).Он имеет хорошие примеры псевдокода, которые могут помочь в создании собственной реализации

0 голосов
/ 12 мая 2011

Я использовал книгу http://www.amazon.com/Compiler-Design-C-Prentice-Hall-software/dp/0131550454 и реализовано здесь http://code.google.com/p/regex/

0 голосов
/ 27 февраля 2011

В реализации Microsoft TR1 , которая представляет собой отчет для следующего стандарта C ++ 0x, доступна библиотека <regex>.

TR1 доступен для Visual 2008 и по умолчанию в Visual 2010.

Но это интересно, только если вы планируете программировать на платформе Windows, конечно.

Я не знаю, включает ли g ++ библиотеку <regex> в свою реализацию tr1. Я думаю, да, но я не знаю.

0 голосов
/ 27 февраля 2011

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

http://oreilly.com/catalog/9780596528126?green=9514625548&cmp=af-mybuy-9780596528126.IP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...