コード例 #1
0
def p_connection_defn(t):
    '''connection_defn : connection connector_ref ID LPAREN from ID DOT ID COMMA to ID DOT ID RPAREN SEMI
                       | connection connector_ref ID LPAREN from ID COMMA to ID DOT ID RPAREN SEMI
                       | connection connector_ref ID LPAREN from ID DOT ID COMMA to ID RPAREN SEMI'''
    connector = t[2]
    name = t[3]

    if len(t) == 16:
        from_instance = Reference(t[6], Instance, filename=t.lexer.filename, \
            lineno=t.lexer.lineno)
        from_interface = Reference(t[8], Interface, \
            filename=t.lexer.filename, lineno=t.lexer.lineno)
        to_instance = Reference(t[11], Instance, filename=t.lexer.filename, \
            lineno=t.lexer.lineno)
        to_interface = Reference(t[13], Interface, \
            filename=t.lexer.filename, lineno=t.lexer.lineno)

    else:
        assert len(t) == 14

        # placeholder refering to 'current instance of this component'
        # required for hierarchical components
        virtual_instance = Instance(Component(),
                                    '__virtual__',
                                    filename=t.lexer.filename,
                                    lineno=t.lexer.lineno)

        if t[7] == ',':
            from_instance = virtual_instance
            from_interface = Reference(t[6], Interface, \
                filename=t.lexer.filename, lineno=t.lexer.lineno)
            to_instance = Reference(t[9], Instance, filename=t.lexer.filename, \
                lineno=t.lexer.lineno)
            to_interface =  Reference(t[11], Interface, \
                filename=t.lexer.filename, lineno=t.lexer.lineno)
        else:
            assert t[9] == ','
            from_instance = Reference(t[6], Instance, \
                filename=t.lexer.filename, lineno=t.lexer.lineno)
            from_interface = Reference(t[8], Interface, \
                filename=t.lexer.filename, lineno=t.lexer.lineno)
            to_instance = virtual_instance
            to_interface =  Reference(t[11], Interface, \
                filename=t.lexer.filename, lineno=t.lexer.lineno)


    t[0] = Connection(connector, name, from_instance, from_interface, \
        to_instance, to_interface, filename=t.lexer.filename, \
        lineno=t.lexer.lineno)
コード例 #2
0
ファイル: stage3.py プロジェクト: Ben-PH/camkes-tool
def _lift_instance_defn(location, component_ref, id):
    return Instance(component_ref, id, location)
コード例 #3
0
def p_instance_defn(t):
    '''instance_defn : component component_ref ID SEMI'''
    assert isinstance(t[2], Component) or isinstance(t[2], Reference)
    t[0] = Instance(type=t[2], name=t[3], filename=t.lexer.filename, \
        lineno=t.lexer.lineno)