[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
10.1.4 C++ Parser Interface
The output files ‘output.hh’ and ‘output.cc’
declare and define the parser class in the namespace yy
. The
class name defaults to parser
, but may be changed using
‘%define parser_class_name {name}’. The interface of
this class is detailed below. It can be extended using the
%parse-param
feature: its semantics is slightly changed since
it describes an additional member of the parser class, and an
additional argument for its constructor.
- Type of parser: semantic_type
- Type of parser: location_type
The types for semantic values and locations (if enabled).
- Type of parser: token
A structure that contains (only) the
yytokentype
enumeration, which defines the tokens. To refer to the tokenFOO
, useyy::parser::token::FOO
. The scanner can use ‘typedef yy::parser::token token;’ to “import” the token enumeration (see section Calc++ Scanner).
- Type of parser: syntax_error
This class derives from
std::runtime_error
. Throw instances of it from the scanner or from the user actions to raise parse errors. This is equivalent with first invokingerror
to report the location and message of the syntax error, and then to invokeYYERROR
to enter the error-recovery mode. But contrary toYYERROR
which can only be invoked from user actions (i.e., written in the action itself), the exception can be thrown from function invoked from the user action.
- Method on parser: parser (type1 arg1, ...)
Build a new parser object. There are no arguments by default, unless ‘%parse-param {type1 arg1}’ was used.
- Method on syntax_error: syntax_error (const location_type& l, const std::string& m)
- Method on syntax_error: syntax_error (const std::string& m)
Instantiate a syntax-error exception.
- Method on parser: int parse ()
Run the syntactic analysis, and return 0 on success, 1 otherwise.
The whole function is wrapped in a
try
/catch
block, so that when an exception is thrown, the%destructor
s are called to release the lookahead symbol, and the symbols pushed on the stack.
- Method on parser: std::ostream& debug_stream ()
- Method on parser: void set_debug_stream (std::ostream& o)
Get or set the stream used for tracing the parsing. It defaults to
std::cerr
.
- Method on parser: debug_level_type debug_level ()
- Method on parser: void set_debug_level (debug_level l)
Get or set the tracing level. Currently its value is either 0, no trace, or nonzero, full tracing.
- Method on parser: void error (const location_type& l, const std::string& m)
- Method on parser: void error (const std::string& m)
The definition for this member function must be supplied by the user: the parser uses it to report a parser error occurring at l, described by m. If location tracking is not enabled, the second signature is used.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on August 25, 2013 using texi2html 5.0.