def populate(engine): This_rule_base = engine.get_create('krbparse_test') bc_rule.bc_rule('name2', This_rule_base, 'x', name2, krbparse_test_plans.name2, (pattern.pattern_literal(1), contexts.variable('c'), pattern.pattern_literal((1, 'b',)), pattern.pattern_tuple((pattern.pattern_literal(1), pattern.pattern_literal('b'), contexts.variable('c'),), None),), ('plan', 'd',), (pattern.pattern_literal('x'), contexts.variable('c'), contexts.variable('plan#1'), pattern.pattern_literal(1), pattern.pattern_literal(2), pattern.pattern_literal(3), contexts.variable('plan#2'),)) bc_rule.bc_rule('name3', This_rule_base, 'x', name3, krbparse_test_plans.name3, (pattern.pattern_literal(1), contexts.variable('c'), pattern.pattern_literal((1, 'b',)), pattern.pattern_tuple((pattern.pattern_literal(1), pattern.pattern_literal('b'), contexts.variable('c'),), None),), ('d',), (pattern.pattern_literal('x'), contexts.variable('c'), contexts.variable('plan#1'), pattern.pattern_literal(1), pattern.pattern_literal(2), pattern.pattern_literal(3), contexts.variable('foo_fn'),))
def populate(engine): This_rule_base = engine.get_create('subway_rules') bc_rule.bc_rule('at_station', This_rule_base, 'at_station', at_station, None, (contexts.variable('station'),), (), (contexts.variable('from'), contexts.variable('line'), contexts.variable('station'), pattern.pattern_tuple((contexts.variable('line'),), None), contexts.anonymous('_'),)) bc_rule.bc_rule('travel_on_same_line', This_rule_base, 'take_line', travel_on_same_line, None, (contexts.variable('from'), contexts.variable('line'), contexts.variable('to'),), (), (contexts.variable('from'), pattern.pattern_tuple((contexts.variable('line'),), None), contexts.anonymous('_'), contexts.variable('to'),)) bc_rule.bc_rule('connected_stations', This_rule_base, 'connected', connected_stations, None, (contexts.variable('from'), contexts.variable('to'),), (), (contexts.variable('from'), contexts.variable('line'), contexts.anonymous('_'), contexts.variable('to'),))
def make_pattern(x): if isinstance(x, types.StringTypes): if x[0] == "$": return contexts.variable(x[1:]) return pattern.pattern_literal(x) if isinstance(x, (tuple, list)): return pattern.pattern_tuple(tuple(make_pattern(element) for element in x)) return pattern.pattern_literal(x)
def make_pattern(x): if isinstance(x, str): if x[0] == '$': return contexts.variable(x[1:]) return pattern.pattern_literal(x) if isinstance(x, (tuple, list)): return pattern.pattern_tuple( tuple(make_pattern(element) for element in x)) return pattern.pattern_literal(x)
def p_pattern_tuple4(p): ''' pattern_proper : LP_TOK patterns_proper rest_opt RP_TOK ''' if goal_mode: p[0] = pattern.pattern_tuple(p[2], p[3]) else: p[0] = "pattern.pattern_tuple((%s), %s)" % \ (' '.join(str(x) + ',' for x in p[2]), p[3])
def as_pattern(data): if isinstance(data, tuple) and is_pattern(data): if is_rest_var(data[-1]): name = data[-1][2:] if name[0] == '_': rest_var = contexts.anonymous(name) else: rest_var = contexts.variable(name) return pattern.pattern_tuple( tuple(as_pattern(element) for element in data[:-1]), rest_var) return pattern.pattern_tuple( tuple(as_pattern(element) for element in data)) if isinstance(data, (str, )) and is_pattern(data): name = data[1:] if name[0] == '_': return contexts.anonymous(name) return contexts.variable(name) return pattern.pattern_literal(data)
def as_pattern(data): if isinstance(data, tuple) and is_pattern(data): if is_rest_var(data[-1]): name = data[-1][2:] if name[0] == '_': rest_var = contexts.anonymous(name) else: rest_var = contexts.variable(name) return pattern.pattern_tuple(tuple(as_pattern(element) for element in data[:-1]), rest_var) return pattern.pattern_tuple(tuple(as_pattern(element) for element in data)) if isinstance(data, types.StringTypes) and is_pattern(data): name = data[1:] if name[0] == '_': return contexts.anonymous(name) return contexts.variable(name) return pattern.pattern_literal(data)
def p_pattern_tuple2(p): ''' pattern_proper : LP_TOK data_list ',' '*' variable RP_TOK ''' if goal_mode: p[0] = pattern.pattern_tuple( tuple(pattern.pattern_literal(x) for x in p[2]), p[5]) else: p[0] = "pattern.pattern_tuple((%s), %s)" % \ (' '.join("pattern.pattern_literal(%s)," % str(x) for x in p[2]), p[5])
def p_pattern_tuple3(p): ''' pattern_proper : LP_TOK data_list ',' patterns_proper rest_opt RP_TOK ''' if goal_mode: p[0] = pattern.pattern_tuple( tuple( itertools.chain((pattern.pattern_literal(x) for x in p[2]), p[4])), p[5]) else: p[0] = "pattern.pattern_tuple((%s), %s)" % \ (' '.join(itertools.chain( ("pattern.pattern_literal(%s)," % str(x) for x in p[2]), (str(x) + ',' for x in p[4]))), p[5])
def p_pattern_tuple3(p): ''' pattern_proper : LP_TOK data_list ',' patterns_proper rest_opt RP_TOK ''' if goal_mode: p[0] = pattern.pattern_tuple( tuple(itertools.chain( (pattern.pattern_literal(x) for x in p[2]), p[4])), p[5]) else: p[0] = "pattern.pattern_tuple((%s), %s)" % \ (' '.join(itertools.chain( ("pattern.pattern_literal(%s)," % str(x) for x in p[2]), (str(x) + ',' for x in p[4]))), p[5])
def populate(engine): This_rule_base = engine.get_create('fc_example') fc_rule.fc_rule('son_of', This_rule_base, son_of, (('family', 'son_of', (contexts.variable('child'), contexts.variable('father'), contexts.variable('mother'),), False),), (contexts.variable('child'), contexts.variable('father'), pattern.pattern_literal('father'), pattern.pattern_literal('son'), contexts.variable('mother'), pattern.pattern_literal('mother'),)) fc_rule.fc_rule('daughter_of', This_rule_base, daughter_of, (('family', 'daughter_of', (contexts.variable('child'), contexts.variable('father'), contexts.variable('mother'),), False),), (contexts.variable('child'), contexts.variable('father'), pattern.pattern_literal('father'), pattern.pattern_literal('daughter'), contexts.variable('mother'), pattern.pattern_literal('mother'),)) fc_rule.fc_rule('brothers', This_rule_base, brothers, (('family', 'son_of', (contexts.variable('brother1'), contexts.variable('father'), contexts.variable('mother'),), False), ('family', 'son_of', (contexts.variable('brother2'), contexts.variable('father'), contexts.variable('mother'),), False),), (contexts.variable('brother1'), contexts.variable('brother2'), pattern.pattern_literal('brother'),)) fc_rule.fc_rule('sisters', This_rule_base, sisters, (('family', 'daughter_of', (contexts.variable('sister1'), contexts.variable('father'), contexts.variable('mother'),), False), ('family', 'daughter_of', (contexts.variable('sister2'), contexts.variable('father'), contexts.variable('mother'),), False),), (contexts.variable('sister1'), contexts.variable('sister2'), pattern.pattern_literal('sister'),)) fc_rule.fc_rule('brother_and_sister', This_rule_base, brother_and_sister, (('family', 'son_of', (contexts.variable('brother'), contexts.variable('father'), contexts.variable('mother'),), False), ('family', 'daughter_of', (contexts.variable('sister'), contexts.variable('father'), contexts.variable('mother'),), False),), (contexts.variable('brother'), contexts.variable('sister'), pattern.pattern_literal('sister'), pattern.pattern_literal('brother'),)) fc_rule.fc_rule('facts_for_bc_rules', This_rule_base, facts_for_bc_rules, (), (pattern.pattern_literal('brother'), pattern.pattern_literal('uncle'), pattern.pattern_literal('sister'), pattern.pattern_literal('aunt'), pattern.pattern_literal('son'), pattern.pattern_literal('nephew'), pattern.pattern_literal('daughter'), pattern.pattern_literal('niece'),)) fc_rule.fc_rule('niece_or_nephew_and_aunt_or_uncle', This_rule_base, niece_or_nephew_and_aunt_or_uncle, (('family', 'child_parent', (contexts.variable('nn'), contexts.variable('parent'), contexts.variable('depth'), contexts.anonymous('_'), contexts.variable('child_type'),), False), ('family', 'siblings', (contexts.variable('parent'), contexts.variable('au'), contexts.variable('sibling_type'), contexts.anonymous('_'),), False), ('family', 'as_au', (contexts.variable('sibling_type'), contexts.variable('au_type'),), False), ('family', 'as_nn', (contexts.variable('child_type'), contexts.variable('nn_type'),), False),), (contexts.variable('greats'), contexts.variable('nn'), contexts.variable('au'), contexts.variable('au_type'), contexts.variable('nn_type'),)) fc_rule.fc_rule('parent_and_child', This_rule_base, parent_and_child, (('family', 'child_parent', (contexts.variable('child'), contexts.variable('parent'), contexts.variable('parent_type'), contexts.variable('child_type'),), False),), (contexts.variable('child'), contexts.variable('parent'), pattern.pattern_literal(()), contexts.variable('parent_type'), contexts.variable('child_type'),)) fc_rule.fc_rule('grand_parent_and_child', This_rule_base, grand_parent_and_child, (('family', 'child_parent', (contexts.variable('child'), contexts.variable('parent'), contexts.anonymous('_'), contexts.variable('child_type'),), False), ('family', 'child_parent', (contexts.variable('parent'), contexts.variable('grand_parent'), contexts.variable('parent_type'), contexts.anonymous('_'),), False),), (contexts.variable('child'), contexts.variable('grand_parent'), pattern.pattern_literal(('grand',)), contexts.variable('parent_type'), contexts.variable('child_type'),)) fc_rule.fc_rule('great_grand_parent_and_child', This_rule_base, great_grand_parent_and_child, (('family', 'child_parent', (contexts.variable('child'), contexts.variable('grand_child'), contexts.anonymous('_'), contexts.variable('child_type'),), False), ('family', 'child_parent', (contexts.variable('grand_child'), contexts.variable('grand_parent'), pattern.pattern_tuple((contexts.variable('a'),), contexts.variable('b')), contexts.variable('parent_type'), contexts.anonymous('_'),), False),), (contexts.variable('child'), contexts.variable('grand_parent'), pattern.pattern_tuple((pattern.pattern_literal('great'), contexts.variable('a'),), contexts.variable('b')), contexts.variable('parent_type'), contexts.variable('child_type'),)) fc_rule.fc_rule('first_cousins', This_rule_base, first_cousins, (('family', 'child_parent', (contexts.variable('cousin1'), contexts.variable('sibling1'), contexts.anonymous('_'), contexts.anonymous('_'),), False), ('family', 'siblings', (contexts.variable('sibling1'), contexts.variable('sibling2'), contexts.anonymous('_'), contexts.anonymous('_'),), False), ('family', 'child_parent', (contexts.variable('cousin2'), contexts.variable('sibling2'), contexts.anonymous('_'), contexts.anonymous('_'),), False),), (contexts.variable('cousin1'), contexts.variable('cousin2'), pattern.pattern_literal(1),)) fc_rule.fc_rule('nth_cousins', This_rule_base, nth_cousins, (('family', 'child_parent', (contexts.variable('next_cousin1'), contexts.variable('cousin1'), contexts.anonymous('_'), contexts.anonymous('_'),), False), ('family', 'cousins', (contexts.variable('cousin1'), contexts.variable('cousin2'), contexts.variable('n'),), False), ('family', 'child_parent', (contexts.variable('next_cousin2'), contexts.variable('cousin2'), contexts.anonymous('_'), contexts.anonymous('_'),), False),), (contexts.variable('next_n'), contexts.variable('next_cousin1'), contexts.variable('next_cousin2'),)) fc_rule.fc_rule('how_related_child_parent', This_rule_base, how_related_child_parent, (('family', 'child_parent', (contexts.variable('person1'), contexts.variable('person2'), contexts.variable('prefix'), contexts.variable('p2_type'), contexts.variable('p1_type'),), False),), (contexts.variable('relationship'), contexts.variable('person1'), contexts.variable('person2'),)) fc_rule.fc_rule('how_related_parent_child', This_rule_base, how_related_parent_child, (('family', 'child_parent', (contexts.variable('person2'), contexts.variable('person1'), contexts.variable('prefix'), contexts.variable('p1_type'), contexts.variable('p2_type'),), False),), (contexts.variable('relationship'), contexts.variable('person1'), contexts.variable('person2'),)) fc_rule.fc_rule('how_related_siblings', This_rule_base, how_related_siblings, (('family', 'siblings', (contexts.variable('person1'), contexts.variable('person2'), contexts.variable('p2_type'), contexts.variable('p1_type'),), False),), (contexts.variable('person1'), contexts.variable('person2'), pattern.pattern_tuple((contexts.variable('p1_type'), contexts.variable('p2_type'),), None),)) fc_rule.fc_rule('how_related_nn_au', This_rule_base, how_related_nn_au, (('family', 'nn_au', (contexts.variable('person1'), contexts.variable('person2'), contexts.variable('prefix'), contexts.variable('p2_type'), contexts.variable('p1_type'),), False),), (contexts.variable('relationship'), contexts.variable('person1'), contexts.variable('person2'),)) fc_rule.fc_rule('how_related_au_nn', This_rule_base, how_related_au_nn, (('family', 'nn_au', (contexts.variable('person2'), contexts.variable('person1'), contexts.variable('prefix'), contexts.variable('p1_type'), contexts.variable('p2_type'),), False),), (contexts.variable('relationship'), contexts.variable('person1'), contexts.variable('person2'),)) fc_rule.fc_rule('how_related_cousins', This_rule_base, how_related_cousins, (('family', 'cousins', (contexts.variable('cousin1'), contexts.variable('cousin2'), contexts.variable('n'),), False),), (contexts.variable('nth'), contexts.variable('cousin1'), contexts.variable('cousin2'), pattern.pattern_tuple((contexts.variable('nth'), pattern.pattern_literal('cousins'),), None),)) fc_rule.fc_rule('how_related_removed_cousins', This_rule_base, how_related_removed_cousins, (('family', 'child_parent', (contexts.variable('removed_cousin1'), contexts.variable('cousin1'), contexts.variable('grand'), contexts.anonymous('_'), contexts.anonymous('_'),), False), ('family', 'cousins', (contexts.variable('cousin1'), contexts.variable('cousin2'), contexts.variable('n'),), False),), (contexts.variable('nth'), contexts.variable('r1'), contexts.variable('removed_cousin1'), contexts.variable('cousin2'), pattern.pattern_tuple((contexts.variable('nth'), pattern.pattern_literal('cousins'), contexts.variable('r1'), pattern.pattern_literal('removed'),), None),)) fc_rule.fc_rule('how_related_cousins_removed', This_rule_base, how_related_cousins_removed, (('family', 'cousins', (contexts.variable('cousin1'), contexts.variable('cousin2'), contexts.variable('n'),), False), ('family', 'child_parent', (contexts.variable('removed_cousin2'), contexts.variable('cousin2'), contexts.variable('grand'), contexts.anonymous('_'), contexts.anonymous('_'),), False),), (contexts.variable('nth'), contexts.variable('r1'), contexts.variable('cousin1'), contexts.variable('removed_cousin2'), pattern.pattern_tuple((contexts.variable('nth'), pattern.pattern_literal('cousins'), contexts.variable('r1'), pattern.pattern_literal('removed'),), None),))
def p_pattern_tuple1(p): ''' pattern_proper : LP_TOK '*' variable RP_TOK ''' if goal_mode: p[0] = pattern.pattern_tuple((), p[3]) else: p[0] = "pattern.pattern_tuple((), %s)" % p[3]