Lisaac prototype interface

Section Header
+ name := INPUT_STREAM;
- comment := "This abstract class is the superclass of all classes \ \representing an input stream of bytes.";
Section Inherit
- parent_object:OBJECT :=
Section Public
- push_back_flag:BOOLEAN;
True if one char is already pushed back.
- last_integer:INTEGER;
Last integer read using `read_integer'.
- last_string:STRING :=
Access to the unique common buffer to get for example the result
computed by `read_line', `read_word', `newline', etc. This is a once
function (the same common buffer is used for all streams).
- is_connected:BOOLEAN <-
True when the corresponding stream is connected
to some physical input device.
- end_of_input:BOOLEAN <-
Has end-of-input been reached ?
True when the last character has been read.
To read one character at a time:
- read_character <-
Read a character and assign it to `last_character'.
- last_character:CHARACTER <-
Last character read with `read_character'.
- unread_character <-
Un-read the last character read.
Skipping separators:
- skip_separators <-
Skip all separators (see `is_separator' of class CHARACTER) and
make the first non-separator available in `last_character'. This
non-separator character is pushed back into the stream (see
`unread_character') to be available one more time (the next
`read_character' will consider this non-separator). When
`end_of_input' occurs, this process is automatically stopped.
- skip_separators_using separators:STRING <-
Same job as `skip_separators' using the `separators' set.
- skip_remainder_of_line <-
Skip all the remainder of the line including the end of
line character itself.
To read one number at a time:
- read_integer <-
Read an integer according to the Lisaac syntax.
Make result available in `last_integer'.
Heading separators are automatically skipped using
`is_separator' of class CHARACTER.
Trailing separators are not skipped.
To read one line or one word at a time:
- read_line <-
Read a complete line ended by '\n' or `end_of_input'. Make the
result available in `last_string' common buffer. The end of line
character (usually '\n') is not added in the `last_string' buffer.
- read_word <-
Read a word using `is_separator' of class CHARACTER. Result is
available in the `last_string' common buffer. Heading separators are
automatically skipped. Trailing separators are not skipped
(`last_character' is left on the first one). If `end_of_input' is
encountered, Result can be the empty string.
- newline <-
Consume input until newline ('\n') is found. Corresponding
STRING is stored in `last_string' common buffer.
- reach_and_skip keyword:STRING <-
Try to skip enough characters in order to reach the `keyword'
which is skipped too. If the `keyword' is not in the remainder of
this stream, the process is stopped as soon as `end_of_input'
occurs. As for `skip_separators' the following character of the
`keyword' is available in `last_character' and not yet read.
Other features:
- read_line_in buffer:STRING <-
Same jobs as `read_line' but storage is directly done in `buffer'.
- read_word_using separators:STRING <-
Same jobs as `read_word' using `separators'.
- read_tail_in str:STRING <-
Read all remaining character of the file in `str'.