예제 #1
0
 def p_method(p):
     """method : doccomment            KW_OP    WORD OP_OPEN_PAREN typednames OP_CLOSE_PAREN assumes stm
               | doccomment visibility KW_QUERY WORD OP_OPEN_PAREN typednames OP_CLOSE_PAREN assumes exp"""
     if p[2] == "op":
         p[0] = syntax.Op(p[3], p[5], p[7], p[8], p[1])
     else:
         p[0] = syntax.Query(p[4], p[2], p[6], p[8], p[9], p[1])
예제 #2
0
 def make_subgoal(e, a=[], docstring=None):
     if skip_stateless_synthesis.value and not any(v in ctx for v in free_vars(e)):
         return e
     query_name = fresh_name("query")
     query = syntax.Query(query_name, syntax.Visibility.Internal, [], assumptions + a, e, docstring)
     query_vars = [v for v in free_vars(query) if v not in ctx]
     query.args = [(arg.id, arg.type) for arg in query_vars]
     subgoals.append(query)
     return syntax.ECall(query_name, tuple(query_vars)).with_type(e.type)