Example #1
0
def _build_global_variable(state, addr, slot):
    node = nodes.TableElement()
    node.table = nodes.Identifier()
    node.table.type = nodes.Identifier.T_BUILTIN
    node.table.name = "_env"

    node.key = _build_string_constant(state, slot)

    return node
Example #2
0
def _build_identifier_name(addr, slot, want_type, name):
    node = nodes.Identifier()
    setattr(node, "_addr", addr)

    node.slot = slot
    node.type = want_type
    node.name = name

    return node
Example #3
0
def _build_identifier(state, addr, slot, want_type):
    node = nodes.Identifier()
    setattr(node, "_addr", addr)

    node.slot = slot
    node.type = nodes.Identifier.T_SLOT
    node.slot_index = state.slot_index
    if want_type == nodes.Identifier.T_UPVALUE:
        name = state.debuginfo.lookup_upvalue_name(slot)
        if name is not None:
            node.name = name
        node.type = want_type
        node.slot_index = -1
        node.slot = state.constants.upvalue_references[slot]
    return node
def _build_identifier(state, addr, slot, want_type):
    node = nodes.Identifier()
    setattr(node, "_addr", addr)

    node.slot = slot
    node.type = nodes.Identifier.T_SLOT

    if want_type == nodes.Identifier.T_UPVALUE:
        name = state.debuginfo.lookup_upvalue_name(slot)

        if name is not None:
            node.name = name
            node.type = want_type

    return node
Example #5
0
def _build_identifier(state, addr, slot, want_type):
    node = nodes.Identifier()
    setattr(node, "_addr", addr)

    node.slot = slot
    node.type = nodes.Identifier.T_SLOT

    if want_type == nodes.Identifier.T_UPVALUE:
        name = state.debuginfo.lookup_upvalue_name(slot)

        # No problem if name is None, that'll be fixed in writer.Visitor.visit_identifier
        node.name = name
        node.type = want_type

    return node
Example #6
0
def _build_identifier(state, addr, slot, want_type, need_local_name=False):
    node = nodes.Identifier()
    setattr(node, "_addr", addr)

    node.slot = slot
    node.type = nodes.Identifier.T_SLOT

    if want_type == nodes.Identifier.T_UPVALUE:
        name = state.debuginfo.lookup_upvalue_name(slot)

        if name is not None:
            node.name = name
            node.type = want_type

    if need_local_name and want_type == nodes.Identifier.T_LOCAL:
        name = state.debuginfo.lookup_upvalue_name(slot)

        if name is None:
            name = "slot{slot}".format(slot=slot)
        node.name = name
        node.type = want_type

    return node