Parser Directive Re-Establishing Skipping (skip[])

| Home | Libraries | People | FAQ | More

##### Parser Directive Re-Establishing Skipping (`skip[]`)

###### Description

The `skip` directive is the inverse of `lexeme` or [qi_no_skip `no_skip[]`]. While the `lexeme` directive turns off white space skipping, the `skip` directive turns it on again. This is simply done by wrapping the parts inside the `skip` directive:

    skip[a]

It is also possible to supply a skip parser to the `skip` directive:

    skip(p)[a] // Use `p` as a skipper for parsing `a`

This makes it possible to:

- Perform localized phrase level parsing while doing character level parsing.
- Replace the current skipper anywhere with an entirely different skipper while doing phrase level parsing.

###### Header

    // forwards to <boost/spirit/home/qi/directive/skip.hpp>
    #include <boost/spirit/include/qi_skip.hpp>

Also, see Include Structure.

###### Namespace

Name
`boost::spirit::skip // alias: boost::spirit::qi::skip`

###### Model of

> `UnaryParser`

Notation

`a`

  A `Parser`.

###### Expression Semantics

Semantics of an expression is defined only where it differs from, or is not defined in `UnaryParser`.

Expression | Semantics
--- | ---
`skip[a]` | Re-establish the skipper that got inhibited by lexeme or no_skip
`skip(p)[a]` | Use `p` as a skipper for parsing `a`

###### Attributes

See Compound Attribute Notation.

Expression | Attribute
--- | ---

`skip[a]`

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

`skip(p)[a]`

    a: A --> skip(p)[a]: A
    a: Unused --> skip(p)[a]: Unused

###### Complexity

> The complexity is defined by the complexity of the subject parser, `a`

###### Example

| Note
The test harness for the example(s) below is presented in the Basics Examples section.

Some using declarations:

    using boost::spirit::qi::skip;
    using boost::spirit::qi::int_;
    using boost::spirit::ascii::space;

Simple usage of `skip[]`:

Explicitly specify a skip parser. This parser parses comma delimited numbers, ignoring spaces.

    test_parser("1, 2, 3, 4, 5", skip(space)[int_ >> *(',' >> int_)]);