In case of an invalid input, the bracket notation parser may end up in an endless loop. More specifically, the while loop in function parse_single does not increase the iterator in case that match_str is no bracket.
Minimal example:
{a{b}c}
This causes an endless loop with match_str equal to c.