diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2016-08-22 08:39:05 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2016-08-22 08:39:05 -0700 |
commit | 2d7131670e771af8bac13c315ba262cb3a321505 (patch) | |
tree | 60814e3e851ebef674beb58ab72b91d6ef734532 /016dilated_reagent.cc | |
parent | aefe0592e812dd2384a3c49d5b02a58010a14e36 (diff) | |
download | mu-2d7131670e771af8bac13c315ba262cb3a321505.tar.gz |
3244
Diffstat (limited to '016dilated_reagent.cc')
-rw-r--r-- | 016dilated_reagent.cc | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/016dilated_reagent.cc b/016dilated_reagent.cc index 09715848..38bb5578 100644 --- a/016dilated_reagent.cc +++ b/016dilated_reagent.cc @@ -61,17 +61,27 @@ string slurp_balanced_bracket(istream& in) { while (in >> c) { if (c == '(') open_brackets.push_back(c); if (c == ')') { + if (open_brackets.empty() || open_brackets.back() != '(') { + raise << "unbalanced ')'\n" << end(); + continue; + } assert(open_brackets.back() == '('); open_brackets.pop_back(); } if (c == '[') open_brackets.push_back(c); if (c == ']') { - assert(open_brackets.back() == '['); + if (open_brackets.empty() || open_brackets.back() != '[') { + raise << "unbalanced ']'\n" << end(); + continue; + } open_brackets.pop_back(); } if (c == '{') open_brackets.push_back(c); if (c == '}') { - assert(open_brackets.back() == '{'); + if (open_brackets.empty() || open_brackets.back() != '{') { + raise << "unbalanced '}'\n" << end(); + continue; + } open_brackets.pop_back(); } result << c; |