def impl_op(engine, precedence, typ, name): from pypy.lang.prolog.interpreter import parsing if engine.operations is None: engine.operations = parsing.make_default_operations() operations = engine.operations precedence_to_ops = {} for prec, allops in operations: precedence_to_ops[prec] = allops for form, ops in allops: try: index = ops.index(name) del ops[index] except ValueError: pass if precedence != 0: if precedence in precedence_to_ops: allops = precedence_to_ops[precedence] for form, ops in allops: if form == typ: ops.append(name) break else: allops.append((typ, [name])) else: for i in range(len(operations)): (prec, allops) = operations[i] if precedence > prec: operations.insert(i, (precedence, [(typ, [name])])) break else: operations.append((precedence, [(typ, [name])])) engine.parser = parsing.make_parser_at_runtime(engine.operations)
def __init__(self): self.parser = None self.operations = make_default_operations() self.terms = []
def __init__(self): self.parser = None self.operations = make_default_operations() self.terms = []