@Override public ParseToken parseToken(String expression, Parser parser) { if (expression.charAt(0) == '(') if (expression.charAt(expression.length() - 1) != ')') checkWithException(expression); else { int level = 0; for (int i = 0; i < expression.length(); ++i) { char c = expression.charAt(i); if (c == '(') level++; if (level < 1) return null; if (c == ')') level--; } if (level != 0) throw new BracketsError(); return parser.parse(expression.substring(1, expression.length() - 1)); } return null; }