@@ -195,9 +195,10 @@ void new_scopet::print_rec(std::ostream &out, unsigned indent) const
195195class Parser // NOLINT(readability/identifiers)
196196{
197197public:
198- explicit Parser (cpp_parsert &_cpp_parser)
198+ Parser (cpp_parsert &_cpp_parser, message_handlert &message_handler )
199199 : lex(_cpp_parser.token_buffer),
200- parser(_cpp_parser),
200+ parse_tree (_cpp_parser.parse_tree),
201+ message_handler(message_handler),
201202 max_errors(10 ),
202203 cpp11(
203204 config.cpp.cpp_standard == configt::cppt::cpp_standardt::CPP11 ||
@@ -212,7 +213,8 @@ class Parser // NOLINT(readability/identifiers)
212213
213214protected:
214215 cpp_token_buffert &lex;
215- cpp_parsert &parser;
216+ cpp_parse_treet &parse_tree;
217+ message_handlert &message_handler;
216218
217219 // scopes
218220 new_scopet root_scope;
@@ -517,8 +519,9 @@ bool Parser::SyntaxError()
517519
518520 message+=" '" ;
519521
520- parser.log .error ().source_location = source_location;
521- parser.log .error () << message << messaget::eom;
522+ messaget log{message_handler};
523+ log.error ().source_location = source_location;
524+ log.error () << message << messaget::eom;
522525 }
523526
524527 return ++number_of_errors < max_errors;
@@ -8381,7 +8384,7 @@ bool Parser::operator()()
83818384
83828385 while (rProgram (item))
83838386 {
8384- parser. parse_tree .items .push_back (item);
8387+ parse_tree.items .push_back (item);
83858388 item.clear ();
83868389 }
83878390
@@ -8392,8 +8395,8 @@ bool Parser::operator()()
83928395 return number_of_errors!=0 ;
83938396}
83948397
8395- bool cpp_parse ()
8398+ bool cpp_parse (cpp_parsert &cpp_parser, message_handlert &message_handler )
83968399{
8397- Parser parser (cpp_parser);
8400+ Parser parser (cpp_parser, message_handler );
83988401 return parser ();
83998402}
0 commit comments