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)
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)
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)
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))
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)
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)
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))
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 ) )
def match(self, relation): from yargy.api import rule return rule(self).match(relation)
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)
def named(self, name): from yargy.api import rule return rule(self).named(name)
def repeatable(self, min=None, max=None, reverse=False): from yargy.api import rule return rule(self).repeatable(min=min, max=max, reverse=reverse)
def optional(self): from yargy.api import rule return rule(self).optional()
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)
def optional(self): from yargy.api import rule return rule(self).optional()
def match(self, relation): from yargy.api import rule return rule(self).match(relation)
def repeatable(self, min=None, max=None, reverse=False): from yargy.api import rule return rule(self).repeatable(min=min, max=max, reverse=reverse)
def visit_MinBoundedRule(self, item): from yargy.api import rule items = repeat(item.rule, item.min - 1) + [self.visit_RepeatableRule(item)] return rule(*items)
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)))
def repeatable(self, min=None, max=None): from yargy.api import rule return rule(self).repeatable(min=min, max=max)
def repeatable(self): from yargy.api import rule return rule(self).repeatable()
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)
def named(self, name): from yargy.api import rule return rule(self).named(name)