def __regex__(self): end = self.parser_config.end.pattern if self.parser_config.end else None prec, regex = self.expr.__regex__() regex = regex_iso(prec, regex, "*") if self.parser_config.max_match == MAX_INT: if self.parser_config.min_match == 0: suffix = "*" elif self.parser_config.min_match == 1: suffix = "+" else: suffix = "{" + text(self.parser_config.min_match) + ",}" elif self.parser_config.min_match == self.parser_config.max_match: if self.parser_config.min_match == 1: suffix = "" else: suffix = "{" + text(self.parser_config.min_match) + "}" else: suffix = ("{" + text(self.parser_config.min_match) + "," + text(self.parser_config.max_match) + "}") if end: return "+", regex + suffix + end else: return "*", regex + suffix
def __regex__(self): return ( "|", "|".join( regex_iso(*e.__regex__(), "|") for e in self.exprs if not isinstance(e, Empty)), )
def __regex__(self): white = regex_range(self.white_chars) if not self.ignore_list: if not white: return "*", "" else: return "*", white + "*" ignored = "|".join( regex_iso(*i.__regex__(), "|") for i in self.ignore_list) return "+", f"(?:{white}*(?:{ignored}))*{white}*"
def __regex__(self): return "+", "".join(regex_iso(*e.__regex__(), "+") for e in self.exprs)