| 98 | } |
| 99 | |
| 100 | char const* ParseError::what() const noexcept |
| 101 | { |
| 102 | if (!m_err_msg.empty()) |
| 103 | { |
| 104 | return m_err_msg.c_str(); |
| 105 | } |
| 106 | |
| 107 | m_err_msg += "in "; |
| 108 | m_err_msg += m_file; |
| 109 | m_err_msg += ", at "; |
| 110 | |
| 111 | if (m_line != -1) |
| 112 | { |
| 113 | m_err_msg += "line " + std::to_string(m_line); |
| 114 | } |
| 115 | else |
| 116 | { |
| 117 | m_err_msg += "EOF"; |
| 118 | } |
| 119 | |
| 120 | m_err_msg += ": "; |
| 121 | m_err_msg += std::runtime_error::what(); |
| 122 | |
| 123 | return m_err_msg.c_str(); |
| 124 | } |