The primary user interface class. More...
#include <Driver.h>
Public Member Functions | |
Driver (MgfFile &mgfFile) | |
construct a new parser driver context | |
bool | parse_stream (std::istream &in, const std::string &sname="stream input") |
Invoke the scanner and parser for a stream. | |
bool | parse_string (const std::string &input, const std::string &sname="string stream") |
Invoke the scanner and parser on an input string. | |
bool | parse_file (const std::string &filename) |
Invoke the scanner and parser on a file. | |
void | error (const class location &l, const std::string &m) |
Error handling with associated line number. | |
void | error (const std::string &m) |
General error handling. | |
Public Attributes | |
bool | trace_scanning |
enable debug output in the flex scanner | |
bool | trace_parsing |
enable debug output in the bison parser | |
std::string | streamname |
stream name (file or input stream) used for error messages. | |
Scanner * | lexer |
Pointer to the current lexer instance, this is used to connect the parser to the scanner. | |
Context | context |
Reference to the calculator context filled during parsing of the expressions. |
The primary user interface class.
The Driver class brings together all components. It creates an instance of the Parser and Scanner classes and connects them. Then the input stream is fed into the scanner object and the parser gets it's token sequence. Furthermore the driver object is available in the grammar rules as a parameter. Therefore the driver class contains a reference to the structure into which the parsed data is saved.
mgf::Driver::Driver | ( | MgfFile & | mgfFile | ) |
construct a new parser driver context
void mgf::Driver::error | ( | const std::string & | m | ) |
General error handling.
This can be modified to output the error e.g. to a dialog box.
void mgf::Driver::error | ( | const class location & | l, | |
const std::string & | m | |||
) |
Error handling with associated line number.
This can be modified to output the error e.g. to a dialog box.
bool mgf::Driver::parse_file | ( | const std::string & | filename | ) |
Invoke the scanner and parser on a file.
Use parse_stream with a std::ifstream if detection of file reading errors is required.
filename | input file name |
bool mgf::Driver::parse_stream | ( | std::istream & | in, | |
const std::string & | sname = "stream input" | |||
) |
Invoke the scanner and parser for a stream.
in | input stream | |
sname | stream name for error messages |
bool mgf::Driver::parse_string | ( | const std::string & | input, | |
const std::string & | sname = "string stream" | |||
) |
Invoke the scanner and parser on an input string.
input | input string | |
sname | stream name for error messages |
Reference to the calculator context filled during parsing of the expressions.
Pointer to the current lexer instance, this is used to connect the parser to the scanner.
It is used in the yylex macro.
std::string mgf::Driver::streamname |
stream name (file or input stream) used for error messages.
enable debug output in the bison parser
enable debug output in the flex scanner