with ada.text_io; use ada.text_io; 
-- Demonstrates how look_ahead processes input
-- If the input contains the following three lines (without the "-- "):
-- ab
-- cde
-- f
-- Output will be:
-- FALSE, a
-- FALSE, a
-- get: c = a
-- FALSE, b
-- get: c = b
-- TRUE, ^Q
-- FALSE, c
-- FALSE, f
 
procedure lademo is
    c: character;
    at_eol: Boolean;
    package boolean_io is new enumeration_io(boolean);
    use boolean_io;
begin
    ------------------------------------------------------------------
    -- Look at the FIRST character in the input
    -- This not move the input marker: it proceeds the first character
    look_ahead(c, at_eol);

    put(at_eol);
    put_line(", " & c);

    ------------------------------------------------------------------
    -- Look again at the first character in the input
    -- The input marker has not moved:
    --      it still proceeds the first character
    look_ahead(c, at_eol);

    put(at_eol);
    put_line(", " & c);

    ------------------------------------------------------------------
    -- Now we will actually input the first character
    -- This moves the input marker: it will follow the first character
    get(c);
    put_line("get: c = " & c);

    ------------------------------------------------------------------
    -- Now look at the SECOND character in the input
    look_ahead(c, at_eol);

    put(at_eol);
    put_line(", " & c);

    ------------------------------------------------------------------
    -- Now we will actually input the second character
    -- This moves the input marker: it will follow the second character
    get(c);
    put_line("get: c = " & c);

    ------------------------------------------------------------------
    -- Now look_ahead indicates that the input marker is at end of line
    -- Remember that c is a "random" character when at_eol is true
    look_ahead(c, at_eol);

    put(at_eol);
    put_line(", " & c);

    -- Move to the next line of input
    skip_line;

    ------------------------------------------------------------------
    -- Look at the FIRST character on the second line
    look_ahead(c, at_eol);

    put(at_eol);
    put_line(", " & c);

    -- Move to the next line of input
    skip_line;

    ------------------------------------------------------------------
    -- Look at the FIRST character on the third line
    look_ahead(c, at_eol);

    put(at_eol);
    put_line(", " & c);

end lademo;