2021-08-20 02:05:53 +02:00
|
|
|
#include "parser-driver.hh"
|
|
|
|
|
2021-08-22 14:37:32 +02:00
|
|
|
namespace abacus::parse {
|
2021-08-20 02:05:53 +02:00
|
|
|
|
2021-08-22 23:57:54 +02:00
|
|
|
ParserDriver::ParserDriver()
|
|
|
|
: parse_trace_p_(std::getenv("PARSE")), scan_trace_p_(std::getenv("SCAN")) {
|
|
|
|
}
|
2021-08-20 02:05:53 +02:00
|
|
|
|
|
|
|
int ParserDriver::parse(std::string filename) {
|
|
|
|
filename_ = std::move(filename);
|
|
|
|
|
|
|
|
current_location_.initialize(&filename_);
|
|
|
|
|
|
|
|
scan_open();
|
|
|
|
|
|
|
|
yy::parser parser(*this);
|
|
|
|
parser.set_debug_level(parse_trace_p_);
|
|
|
|
int res = parser.parse();
|
|
|
|
|
|
|
|
scan_close();
|
|
|
|
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
|
|
|
|
yy::location& ParserDriver::location() {
|
|
|
|
return current_location_;
|
|
|
|
}
|
|
|
|
|
|
|
|
yy::location const& ParserDriver::location() const {
|
|
|
|
return current_location_;
|
|
|
|
}
|
|
|
|
|
2021-08-22 14:37:09 +02:00
|
|
|
ParserDriver::numeric_type& ParserDriver::result() {
|
|
|
|
return result_;
|
|
|
|
}
|
|
|
|
|
2021-08-22 14:14:27 +02:00
|
|
|
ParserDriver::numeric_type const& ParserDriver::result() const {
|
|
|
|
return result_;
|
|
|
|
}
|
|
|
|
|
2021-08-22 14:37:32 +02:00
|
|
|
} // namespace abacus::parse
|