![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Parser Directives Forcing Atomic Assignment (as<T>, as_string[], as_wstring[])Boost , Spirit 2.5.2 , Parser Directives
|
![]() | Note |
---|---|
< |
![]() | Note |
---|---|
< |
![]() | Caution |
---|---|
|
// forwards to <boost/spirit/home/qi/directive/as.hpp> #include <boost/spirit/include/qi_as.hpp>
См. такжеВключить структуру.
Имя |
---|
boost::spirit::as // alias:
boost::spirit::qi::as |
boost::spirit::as_string //
alias: boost::spirit::qi::as_string |
boost::spirit::as_wstring //
alias: boost::spirit::qi::as_wstring |
template <typename T> struct as;
Параметр |
Описание |
по умолчанию |
---|---|---|
T | Тип контейнера. Нет |
Notation
a
t
Контейнер типа<T
>.
attr
Атрибут, предоставленный директиве.
Семантика выражения определяется только там, где она отличается от или не определена в<UnaryParser
>.
выражение |
Семантика |
---|---|
as<T>()[a] | |
as_string[a] | эквивалентно< |
< |
См.Составные обозначения атрибутов.
выражение |
атрибут |
---|---|
as<T>()[a] | a:
A -->
as<T>()[a]:
T |
Сложность определяется сложностью предметного парсера<
a
>и сложностью присвоения контейнера<t
>поставляемому атрибуту<attr
>.
![]() | Note |
---|---|
Тестовый ремень для примера (примеров) ниже представлен в разделеОсновные примеры. |
Некоторые используют декларации:
using boost::spirit::utree; using boost::spirit::utree_type; using boost::spirit::utf8_symbol_type; using boost::spirit::qi::as; using boost::spirit::qi::as_string; using boost::spirit::qi::char_;
<as<T>
>,<as_string
>и<as_wstring
>:
Для правильной обработки сцепления струн<utree
>мы используем<as_string[]
>. Мы также используем<as<T>
>для явного создания<utree
>символьного узла.
utree ut; typedef as<utf8_symbol_type> as_symbol_type; as_symbol_type const as_symbol = as_symbol_type(); test_parser_attr("foo", as_string[*char_], ut); std::cout << ut << std::endl; // will output >"foo"< BOOST_ASSERT(ut.which() == utree_type::string_type); ut.clear(); test_parser_attr("foo", as<std::string>()[*char_], ut); std::cout << ut << std::endl; // will output >"foo"< BOOST_ASSERT(ut.which() == utree_type::string_type); ut.clear(); test_parser_attr("foo", as_symbol[*char_], ut); std::cout << ut << std::endl; // will output >foo< BOOST_ASSERT(ut.which() == utree_type::symbol_type); ut.clear(); test_parser_attr("foo", as<utf8_symbol_type>()[*char_], ut); std::cout << ut << std::endl; // will output >foo< BOOST_ASSERT(ut.which() == utree_type::symbol_type);
Статья Parser Directives Forcing Atomic Assignment (as<T>, as_string[], as_wstring[]) раздела Spirit 2.5.2 Parser Directives может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Parser Directives ::
реклама |