def visit_MinBoundedRule(self, item):
        child = self.visit(item.rule)
        items = repeat(child, item.min - 1)
        items.append(repeatable(child, item.reverse))

        from yargy.api import rule
        return rule(*items)
示例#2
0
def bound(item, count):
    from yargy.api import rule, or_

    if count == 1:
        return item
    else:
        return or_(rule(item, bound(item, count - 1)), item)
示例#3
0
    def visit_MinBoundedRule(self, item):
        child = self.visit(item.rule)
        items = repeat(child, item.min - 1)
        items.append(repeatable(child, item.reverse))

        from yargy.api import rule
        return rule(*items)
示例#4
0
    def visit_MinMaxBoundedRule(self, item):
        rule, min, max, reverse = item
        child = self.visit(rule)
        items = repeat(child, min - 1)
        items.append(max_bound(child, max - min + 1, reverse))

        from yargy.api import rule
        return rule(*items)
    def visit_MinMaxBoundedRule(self, item):
        rule, min, max, reverse = item
        child = self.visit(rule)
        items = repeat(child, min - 1)
        items.append(max_bound(child, max - min + 1, reverse))

        from yargy.api import rule
        return rule(*items)
def repeatable(item, reverse=False):
    from yargy.api import forward, or_, rule

    temp = forward()
    a = rule(item, temp)
    b = item
    if reverse:
        a, b = b, a
    return temp.define(or_(a, b))
示例#7
0
    def visit_RepeatableOptionalRule(self, item):
        from yargy.api import forward, or_, rule, empty

        child = self.visit(item.rule)
        temp = forward()
        return temp.define(or_(
            rule(child, temp),
            child,
            empty(),
        ))
def max_bound(item, count, reverse=False):
    from yargy.api import rule, or_

    if count == 1:
        return item
    else:
        a = rule(item, max_bound(item, count - 1, reverse))
        b = item
        if reverse:
            a, b = b, a
        return or_(a, b)
示例#9
0
def max_bound(item, count, reverse=False):
    from yargy.api import rule, or_

    if count == 1:
        return item
    else:
        a = rule(
            item,
            max_bound(item, count - 1, reverse)
        )
        b = item
        if reverse:
            a, b = b, a
        return or_(a, b)
示例#10
0
def repeatable(item, reverse=False):
    from yargy.api import forward, or_, rule

    temp = forward()
    a = rule(item, temp)
    b = item
    if reverse:
        a, b = b, a
    return temp.define(
        or_(
            a,
            b
        )
    )
def repeatable_optional(item,
                        reverse_repeatable=False,
                        reverse_optional=False):
    from yargy.api import forward, or_, rule, empty

    temp = forward()
    a = empty()
    b = rule(item, temp)
    c = item
    if reverse_repeatable:
        b, c = c, b
    if reverse_optional:
        a, b, c = b, c, a
    return temp.define(or_(a, b, c))
示例#12
0
def repeatable_optional(item, reverse_repeatable=False, reverse_optional=False):
    from yargy.api import forward, or_, rule, empty

    temp = forward()
    a = empty()
    b = rule(item, temp)
    c = item
    if reverse_repeatable:
        b, c = c, b
    if reverse_optional:
        a, b, c = b, c, a
    return temp.define(
        or_(
            a,
            b,
            c
        )
    )
示例#13
0
 def match(self, relation):
     from yargy.api import rule
     return rule(self).match(relation)
示例#14
0
 def interpretation(self, attribute):
     from yargy.api import rule
     from yargy.interpretation import prepare_token_interpretator
     interpretator = prepare_token_interpretator(attribute)
     return rule(self).interpretation(interpretator)
示例#15
0
 def named(self, name):
     from yargy.api import rule
     return rule(self).named(name)
示例#16
0
 def repeatable(self, min=None, max=None, reverse=False):
     from yargy.api import rule
     return rule(self).repeatable(min=min, max=max, reverse=reverse)
示例#17
0
 def optional(self):
     from yargy.api import rule
     return rule(self).optional()
示例#18
0
 def interpretation(self, attribute):
     from yargy.api import rule
     from yargy.interpretation import prepare_token_interpretator
     interpretator = prepare_token_interpretator(attribute)
     return rule(self).interpretation(interpretator)
示例#19
0
 def optional(self):
     from yargy.api import rule
     return rule(self).optional()
示例#20
0
 def match(self, relation):
     from yargy.api import rule
     return rule(self).match(relation)
示例#21
0
 def repeatable(self, min=None, max=None, reverse=False):
     from yargy.api import rule
     return rule(self).repeatable(min=min, max=max, reverse=reverse)
示例#22
0
    def visit_MinBoundedRule(self, item):
        from yargy.api import rule

        items = repeat(item.rule,
                       item.min - 1) + [self.visit_RepeatableRule(item)]
        return rule(*items)
示例#23
0
    def visit_RepeatableRule(self, item):
        from yargy.api import forward, or_, rule

        child = self.visit(item.rule)
        temp = forward()
        return temp.define(or_(child, rule(child, temp)))
示例#24
0
 def repeatable(self, min=None, max=None):
     from yargy.api import rule
     return rule(self).repeatable(min=min, max=max)
示例#25
0
 def repeatable(self):
     from yargy.api import rule
     return rule(self).repeatable()
示例#26
0
    def visit_MinMaxBoundedRule(self, item):
        from yargy.api import rule

        child, min, max = item
        items = repeat(child, min - 1) + [bound(child, max - min + 1)]
        return rule(*items)
示例#27
0
 def named(self, name):
     from yargy.api import rule
     return rule(self).named(name)