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

Parser Directive Inhibiting Skipping (lexeme[])

Boost , Spirit 2.5.2 , Parser Directives

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
Description

Директива<lexeme>делает его предмет примитивным. С логической точки зрения, лексемы (и примитивы) являются минимальными атомными единицами (например, слова, числа, идентификаторы и т. д.). Это то, что вы обычно помещаете в лексер (подчеркивая термин «лексема»), но в мире без лексера вы помещаете их в лексему. Рассматривая свою тему как примитивную, директива<lexeme>делает первоначальный предварительный скип (как и все примитивы) и отключает пропуск белого пространства.

На уровне фраз парсер игнорирует белые пространства, возможно, включая комментарии. Используйте<lexeme>в ситуациях, когда вы хотите работать на уровне персонажа вместо уровня фразы. Парсеров можно заставить работать на уровне символов, включив соответствующие части в директиву<lexeme>. Например, вот правило, которое анализирует целые числа:

integer = lexeme[ -(lit('+') | '-') >> +digit ];

Директива<lexeme>предписывает парсеру работать на уровне символов. Без него правило<integer>допускало бы ошибочные встраиваемые белые пространства в входы, такие как<"1 2 345">, которые будут разбираться как<"12345">.

[Note]Note

Имейте в виду, что<lexeme[]>предварительно проскакивает места. Если этого не требуется, используйте.<no_skip>Вместо этого директива.

Header
// forwards to <boost/spirit/home/qi/directive/lexeme.hpp>
#include <boost/spirit/include/qi_lexeme.hpp>

См. такжеВключить структуру.

Namespace

Имя

boost::spirit::lexeme // alias: boost::spirit::qi::lexeme

Model of

Notation

a

<Parser>.

Expression Semantics

Семантика выражения определяется только там, где она отличается от или не определена в<UnaryParser>.

выражение

Семантика

lexeme[a]

Attributes

См.Составные обозначения атрибутов.

выражение

атрибут

lexeme[a]

a: A --> lexeme[a]: A
a: Unused --> lexeme[a]: Unused

Complexity

Example
[Note]Note

Тестовый ремень для примера (примеров) ниже представлен в разделеОсновные примеры.

Некоторые используют декларации:

using boost::spirit::qi::lexeme;
using boost::spirit::qi::lit;
using boost::spirit::ascii::digit;

Простое использование<lexeme[]>:

Использование лексемы здесь предотвратит пропуск между цифрами и знаками, делающими входы, такие как<"1 2 345">ошибочными.

test_phrase_parser("12345", lexeme[ -(lit('+') | '-') >> +digit ]);


PrevUpHomeNext

Статья Parser Directive Inhibiting Skipping (lexeme[]) раздела Spirit 2.5.2 Parser Directives может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Parser Directives ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 03:27:10/0.0040130615234375/0