Bounds checks with padding
--------------------------

This example uses bounds checks with padding to handle the end of input (this
method is enabled by default). The program counts space-separated single-quoted
strings. There is a padding of ``YYMAXFILL`` null characters appended at the end
of input, where ``YYMAXFILL`` value is autogenerated with a ``max`` block. It
is not necessary to use null for padding --- any characters can be used as long
as they do not form a valid lexeme suffix (in this example padding should not
contain single quotes, as they may be mistaken for a suffix of a single-quoted
string). There is a "stop" rule that matches the first padding character (null)
and terminates the lexer (note that it checks if null is at the beginning of
padding, otherwise it is a syntax error). Bounds checks are generated only in
some states that are determined by the strongly connected components of the
underlying automaton. Checks have the form ``(YYLIMIT - YYCURSOR) < n`` or
``YYLESSTHAN(n)`` with generic API, where ``n`` is the minimum number of
characters that are needed for the lexer to proceed (it also means that the next
bounds check will occur in at most ``n`` characters). If the check condition is
true, the lexer has reached the end of input and will invoke ``YYFILL(n)`` that
should either supply at least ``n`` input characters or not return. In this
example ``YYFILL`` always fails and terminates the lexer with an error (which is
fine because the input fits into one buffer). See the `YYFILL with padding`_
section for an example that refills the input buffer with ``YYFILL``.
