Beispiel #1
0
    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)),
     )
Beispiel #3
0
    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}*"
Beispiel #4
0
 def __regex__(self):
     return "+", "".join(regex_iso(*e.__regex__(), "+") for e in self.exprs)