示例#1
0
def modify_states(text, turnon=[], turnoff=[]):
    """
    Turns nodes on and off and comments out lines 
    that contain assignment to any of the nodes 
    
    Will use the main lexer.
    """
    turnon = util.as_set(turnon)
    turnoff = util.as_set(turnoff)
    tokens = tokenize(text)

    init = init_tokens(tokens)
    init_lines = map(tok2line, init)

    # override the initial values
    init_lines.extend(['%s=True' % node for node in turnon])
    init_lines.extend(['%s=False' % node for node in turnoff])

    alter = turnon | turnoff
    update = update_tokens(tokens)
    update_lines = []
    for token in update:
        line = tok2line(token)
        if token[0].value in alter or token[1].value in alter:
            line = '#' + line
        update_lines.append(line)

    all = init_lines + update_lines
    return '\n'.join(all)
示例#2
0
def modify_states( text, turnon=[], turnoff=[] ):
    """
    Turns nodes on and off and comments out lines 
    that contain assignment to any of the nodes 
    
    Will use the main lexer.
    """
    turnon  = util.as_set( turnon )
    turnoff = util.as_set( turnoff )
    tokens  = tokenize( text )

    init = init_tokens( tokens )
    init_lines = map(tok2line, init)

    # override the initial values
    init_lines.extend( [ '%s=True'  % node for node in turnon  ] )
    init_lines.extend( [ '%s=False' % node for node in turnoff ] )

    alter = turnon | turnoff
    update = update_tokens ( tokens )
    update_lines = []
    for token in update:
        line = tok2line( token)
        if token[0].value in alter or token[1].value in alter:
            line = '#' + line
        update_lines.append( line )

    all = init_lines + update_lines
    return '\n'.join( all )
示例#3
0
 def go(self, g, actor):
     if not self.glom:
         raise NeedArg(self, 'glom')
     #old_members = as_set(g.members_of(self.glom))
     old_members = as_set(
         g.find_all(CTagged(Avail), subset=g.members_of(self.glom)))
     excluded = as_set(g.find_all(CTagged(Exclude), subset=old_members))
     new_members = old_members - excluded
     g.remove_node(self.glom)
     if new_members:
         g.add_node(Glom, new_members)
         g.new_state(self.actor, Completed)
     else:  # should signal failure  TODO
         print('REGLOM FAILED', self.glom, old_members, excluded,
               new_members)
示例#4
0
 def jump(self, addr: Addr, relation: Values) -> Set[Addr]:
     addrs = as_set(addr)
     for r in as_iter(relation):
         new_addrs = set()
         for addr in addrs:
             new_addrs |= self._single_jump(addr, r)
         addrs = new_addrs
     return addrs
示例#5
0
 def go(self, g: 'G', actor: NRef, env: AcEnv) -> None:
     taggees = set()
     for name in self.names:
         v = self.get(g, actor, env, name)
         taggees |= as_set(v)
     env['taggees'] = taggees
示例#6
0
文件: Graph.py 项目: bkovitz/FARGish
 def __init__(self, nodeset: Iterable[Node]):
     self.nodeset = as_set(nodeset)
     self.nodeclasses = defaultdict(set)
     for node in self.nodeset:
         self.nodeclasses[node.__class__].add(node)
示例#7
0
 def is_exact_match(self, g, node, kwargs):
     kwarg_mates = as_set(kwargs.get(self.this_port_label, empty_set))
     node_mates = g.neighbors(node, port_label=self.this_port_label)
     return kwarg_mates == node_mates