Header lexy/dsl/eof.hpp

Branch rule lexy::dsl::eof

namespace lexy
    struct expected_eof {};

namespace lexy::dsl
    constexpr branch-rule auto eof;

eof is a branch rule that matches the end of input (EOF).

(Branch) Parsing

Succeeds if the reader is at the end of the input, without consuming anything.


lexy::expected_eof: at the unchanged reader position. It then recovers immediately.

Parse tree

Single token node whose range is empty with the lexy::predefined_token_kind  lexy::eof_token_kind.

Parsing eof multiple times in sequence has no additional effect: they all succeed if the first one succeeded and they all fail if the first one failed.

Example 1. Match the empty input
struct production
    static constexpr auto rule = dsl::eof;
Example 2. Prevent trailing characters
struct production
    static constexpr auto rule = LEXY_LIT("Hello") + dsl::eof;
Without eof, lexy will happily match the prefix of an input only, ignoring any junk characters after it is finished.
It does not skip whitespace before checking for EOF. Use lexy::dsl::whitespace + eof  to do that.

See also