Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Chapter 43. Boost.Xpressive

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Part I. The Boost C++ Libraries (BoostBook Subset)

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Chapter 43. Boost.Xpressive

Eric Niebler

Распространяется под лицензией Boost Software License, версия 1.0. (См. сопроводительный файл LICENSE_1_0.txt или копию по адресуhttp://www.boost.org/LICENSE_1_0.txt)

Таблица содержания

Preface
User's Guide
Introduction
Installing xpressive
Quick Start
Creating a Regex Object
Matching and Searching
Accessing Results
String Substitutions
String Splitting and Tokenization
Named Captures
Grammars and Nested Matches
Semantic Actions and User-Defined Assertions
Symbol Tables and Attributes
Localization and Regex Traits
Tips 'N Tricks
Concepts
Examples
Reference
Header <boost/xpressive/basic_regex.hpp>
Header <boost/xpressive/match_results.hpp>
Header <boost/xpressive/regex_actions.hpp>
Header <boost/xpressive/regex_algorithms.hpp>
Header <boost/xpressive/regex_compiler.hpp>
Header <boost/xpressive/regex_constants.hpp>
Header <boost/xpressive/regex_error.hpp>
Header <boost/xpressive/regex_iterator.hpp>
Header <boost/xpressive/regex_primitives.hpp>
Header <boost/xpressive/regex_token_iterator.hpp>
Header <boost/xpressive/regex_traits.hpp>
Header <boost/xpressive/sub_match.hpp>
Header <boost/xpressive/traits/c_regex_traits.hpp>
Header <boost/xpressive/traits/cpp_regex_traits.hpp>
Header <boost/xpressive/traits/null_regex_traits.hpp>
Header <boost/xpressive/xpressive.hpp>
Header <boost/xpressive/xpressive_dynamic.hpp>
Header <boost/xpressive/xpressive_fwd.hpp>
Header <boost/xpressive/xpressive_static.hpp>
Header <boost/xpressive/xpressive_typeof.hpp>
Acknowledgments
Appendices
Appendix 1: History
Appendix 2: Not Yet Implemented
Appendix 3: Differences from Boost.Regex
Appendix 4: Performance Comparison
Appendix 5: Implementation Notes

Жена:Новый Шиммер — это воск пола!
Муж:Нет, новый Шиммер - это начинка для десерта!
Жена:Это воск для пола!
Муж:Это десерт!
Жена:Это напольный воск, говорю вам!
Муж:Это десерт, корова!
Объявитель:Эй, эй, эй, успокойтесь, вы двое. Новый Шиммер — это воск для полаидесертная начинка!

— Saturday Night Live

Description

xpressive - это продвинутая объектно-ориентированная библиотека шаблонов регулярных выражений для C++. Регулярные выражения могут быть написаны как строки, которые анализируются во время выполнения, или как шаблоны выражения, которые анализируются во время компиляции. Регулярные выражения могут относиться друг к другу и к себе рекурсивно, позволяя выстраивать из них произвольно сложные грамматики.

Motivation

Если вам нужно манипулировать текстом на C++, у вас обычно есть два варианта: движок регулярного выражения или генератор парсера. Двигатели регулярных выражений (например,Boost.Regex) являются мощными и гибкими; шаблоны представлены в виде строк, которые могут быть указаны во время выполнения. Однако это означает, что синтаксические ошибки также не обнаруживаются до времени выполнения. Кроме того, регулярные выражения плохо подходят для сложных задач обработки текста, таких как сопоставление сбалансированных вложенных тегов. Эти задачи традиционно решались парсерными генераторами (такими какSpirit Parser Framework). Эти животные более мощные, но менее гибкие. Как правило, они не позволяют произвольно изменять правила грамматики на лету. Кроме того, у них нет исчерпывающей обратной семантики регулярных выражений, что может затруднить создание некоторых типов шаблонов.

xpressive объединяет эти два подхода и занимает уникальную нишу в мире обработки текста на C++. С помощью xpressive вы можете использовать его так же, как иBoost.Regex, представляя регулярные выражения в виде строк. Или вы можете использовать его так, как вы бы использовалиSpirit, записывая свои регексы как выражения C++, пользуясь всеми преимуществами встроенного языка, предназначенного для манипулирования текстом. Более того, вы можете смешать два, чтобы получить преимущества обоих, написав грамматики регулярного выражения, в которых некоторые из регулярных выражений статически связаны - жестко закодированы и синтаксис-проверены компилятором - и другие динамически связаны и указаны во время выполнения. Эти регулярные выражения могут относиться друг к другу рекурсивно, сопоставляя шаблоны в строках, которые обычные регулярные выражения не могут.

Influences and Related Work

На дизайн интерфейса xpressive сильно повлияли библиотека Boost.RegexДжона Мэддокаи егопредложениедобавить регулярные выражения в Стандартную библиотеку. Я также черпал большое вдохновение из работы Джоэла де Гусмана «Парсеровская структура духа», которая послужила моделью для статического подавления. Другими источниками вдохновения являютсяPerl 6редизайн иGRETA. (Вы можете прочитать краткое изложение изменений, которые Perl 6 привнесет в культуру регексаздесь.)

Последний пересмотр: 21 сентября 2016 года в 14:37:38 GMT


PrevUpHomeNext

Статья Chapter 43. Boost.Xpressive раздела The Boost C++ Libraries BoostBook Documentation Subset Part I. The Boost C++ Libraries (BoostBook Subset) может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Part I. The Boost C++ Libraries (BoostBook Subset) ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-07-04 10:59:56/0.0074460506439209/0