#include "editor.h" #include using std::string; using size_type = Editor::size_type; size_type Editor::get_size() const { return text.size(); } Editor::size_type Editor::find_left_par(size_type pos) const { char right_par = text[pos]; char left_par; // Determine the matching left parenthesis for the given right parenthesis switch (right_par) { case ')': left_par = '('; break; case ']': left_par = '['; break; case '}': left_par = '{'; break; default: return string::npos; // Not a valid right parenthesis } int balance = 1; // Start with the right parenthesis at text[pos] for (size_type i = pos; i-- > 0;) { if (text[i] == left_par) { balance--; if (balance == 0) return i; // Found the matching left parenthesis } else if (text[i] == right_par) { balance++; } } return string::npos; // No matching left parenthesis found }