""" S -> E E -> 1 | "(" E ")" S | E / \ 1 ( E ) / \ 1 ( E ) Top-down = LL e.g. recursive descent """ def start(symbols): return expression(symbols) def expression(symbols): print(" expression {} ? ".format(symbols)) if symbols == "1": return True elif symbols[0] == '(' and symbols[-1] == ')': return expression(symbols[1:-1]) else: return False result = start("((1))") print(result)