Improved parser, it now can't have overlapping brackets (for example: "[
{ ]" is wrong, "[ {} ]" is right)