docs: def __parse(self, tokenlist):
          """see parent docstring"""
          #empty stack
          #iterate over symbollist
          tokenlist = [x for x in tokenlist]
          if not isinstance(tokenlist, list):
              raise TypeError("Expected list, got %s" % tokenlist.__class__.__name__)
          LOG.debug("get_trees: checking list: " + str(tokenlist))
          stack = [(0, Extended_S)]
          while True:
              state = stack[-1][0]
              if len(tokenlist):#FIXME: tokenlist with one element is reported as false
                  token = tokenlist[0]
              else:
                  token = EndSymbol()
              newdic = self.__parsertable.insert(state, token)
              action = newdic["action"]
              if action == "Fail":
                  return False
              elif action == "Accept":
                  return True
              if action == "Reduce":
                  reductionrule = newdic["rule"]
                  #TODO extract len(right side) of the rule and insert left side
                  for rsymbol in reversed(reductionrule.rightside):
                      state, symbol = stack.pop() # TODO: check
                  state = stack[-1][0]
                  state = self.__parsertable.goto(state,reductionrule.leftside[0])
                  stack.append((state, reductionrule.leftside[0]))
              elif action == "Shift":
                  stack.append((newdic['dest'], tokenlist.pop(0)))
              else:
                  raise ValueError("Unknown action")
          return False