Next: , Previous: C++ Location Values, Up: C++ Parsers


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 semantics value and locations.

— Type of parser: token

A structure that contains (only) the definition of the tokens as the yytokentype enumeration. To refer to the token FOO, the scanner should use yy::parser::token::FOO. The scanner can use ‘typedef yy::parser::token token;’ to “import” the token enumeration (see Calc++ Scanner).

— 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 parser: int parse ()

Run the syntactic analysis, and return 0 on success, 1 otherwise.

— 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)

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.