int get_line(): This private member function reads in a line of text from the standard input and stores it in the buffer of the Parser object. The line_num data member is incremented accordingly. If the parser already had a line cached as the result of a prior call to unget_line(), then no line is read in from standard input -- the line already in the buffer will be regarded as the current line of input.
void unget_line(): During the processing of the input stream, it is sometimes necessary for the parser to put a line back in the input stream when it has read too far ahead. The unget_line() member function does this by leaving the line in the buffer unchanged and setting the cached data member to TRUE. The function can ``unget'' a line only if at least one line has already been read and the cached data member is FALSE.
void error(char *err): This member function simply displays the supplied error message, the current line number and current text line to the diagnostic log stream, cerr. It is used to report errors encountered during the parsing of the input stream.
char *get_word(const char *delim = " "): This function implements an elementary tokenizer for the Parser class. Upon completion, this function will return the next token in the buffer that is delimited by one of the characters in the delim parameter. It makes use of a temporary buffer which is dynamically allocated by this method, if necessary. The library function strtok() is used to extract the tokens from the current line.
const int line_size: This variable represents the size of the buffer to be used by the parser to store each line of input. It is initialized by the Parser constructor. Its value should be larger than the length of the longest text line in the input stream.
int line_num: This data member keeps track of the number of lines currently read. When an error is encountered in the input stream, the line number stored in this variable is displayed to aid in the debugging process.
char *buffer: This data member stores the contents of the current line read from standard input. It is dynamically allocated by the Parser constructor. The get_line() member function actually stores the contents of the current line in the buffer.
char *tmp_buf: During execution of the tokenization function, get_word(), a copy of the line pointed to by the buffer data member is made and stored in tmp_buf. Doing this provides the tokenizer function with a copy of the buffer to manipulate without altering the original contents pointed to by buffer.
int cached: When a line is to be placed back into the input stream by the unget_line() member function, the cached data member is set to TRUE. This will inhibit a subsequent get_line() invocation from trying to read another line from standard input.
int read_one: Upon reading a line of text from the input stream, this data member is set to TRUE, indicating that at least one line of standard input has been successfully read. This boolean value is consulted by the unget_line() and get_word() member functions.