示例#1
0
def node_from_term(asker, quoted_term):
    head = asker.ask(fields.get_field(representations.head(), quoted_term)).firm_answer
    bindings = asker.ask(fields.get_field(representations.bindings(), quoted_term)).firm_answer
    return asker.reply(answer=properties.simple_add_modifier(
        node(head, T.empty_list()),
        children_on_expanded(bindings)
    ))
示例#2
0
 def dispatch(x):
     view_in = asker.refresh(view)
     asker.update(add_line(input), view_in)
     head = fields.get(asker, representations.head(), x)
     bindings = fields.get(asker, representations.bindings(), x)
     view_in = asker.refresh(view_in)
     asker.update(add_line(head), view_in)
     for p in dictionaries.item_iterator(asker, bindings):
         var, val = pairs.to_pair(asker, p)
         view_in = asker.refresh(view_in)
         asker.update(bind_variable(var, val), view_in)
     return properties.trivial()
示例#3
0
def unquote(asker, value):
    #FIXME more circular dependencies
    import dictionaries, strings
    if isinstance(value, representations.Representation):
        return value.represents
    #FIXME all of this should be done with requirements embedded in questions
    #rather than asking and then converting
    bindings = asker.ask(fields.get_field(representations.bindings(), value)).firm_answer
    proto_literal_bindings = dictionaries.to_dict(asker, bindings)
    literal_bindings = frozendict({strings.to_str(asker, k):unquote(asker, v) 
            for k, v in proto_literal_bindings.iteritems()})
    head = asker.ask(fields.get_field(representations.head(), value)).firm_answer
    literal_head = strings.to_str(asker, head)
    return T(literal_head, literal_bindings)
示例#4
0
def reduce_referent_of(asker, s):
    import dictionaries
    return asker.reply(answer=fields.compose(representations.bindings(), dictionaries.image(s)))
示例#5
0
def get_starting_view(asker, query):
    head = fields.get(asker, representations.head(), query)
    bindings = fields.get(asker, representations.bindings(), query)
    initial_lines = T.from_list([head, T.from_str("---")])
    return asker.reply(answer=view(initial_lines, bindings))