def __call__(self, inp:str, parse_inp:ParseResult=None, idx:int=0) -> ParseResult: if parse_inp is not None: idx = parse_inp.last_idx() else: idx = 0 parse_result = ParseResult() for target_idx, c in enumerate(inp[idx:]): if not c.isspace(): break parse_result.add(idx + target_idx + 1, inp[idx : idx + target_idx+1]) return parse_result
def __call__(self, inp: str, parse_inp: ParseResult = None, idx: int = 0) -> ParseResult: start_idx = parse_inp.last_idx() if parse_inp is not None else idx a_result = self.A(inp, parse_inp, idx=idx) if a_result.empty() or a_result.last_idx() == start_idx: return ParseResult() b_result = self.B(inp, a_result) if b_result.last_idx() <= a_result.last_idx(): return ParseResult() parse_out = ParseResult() parse_out.extend(a_result) parse_out.update(b_result.last_idx(), b_result.last_str()) return parse_out
def __call__(self, inp:str, parse_inp:ParseResult=None, idx:int=0) -> ParseResult: if parse_inp is not None: idx = parse_inp.last_idx() else: idx = 0 parse_result = ParseResult() for target_idx, c in enumerate(inp[idx:]): if c.isalpha(): continue elif target_idx > 0 and (c.isalnum() or c == '-'): continue else: break if target_idx == 0: return parse_result parse_result.add(idx + target_idx + 1, inp[idx : idx + target_idx+1]) return parse_result