![]() |
![]() ![]() ![]() ![]() |
![]() |
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
atКонтейнер типа<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 ::
реклама |