Пример #1
0
 def emit_equal(self, word):
     return opmap["COMPARE_OP"], cmp_op.index("==")
Пример #2
0
from dis import opmap

from collections import OrderedDict
from opcode import cmp_op

from .interpreter import Interpreter


CALL_FUNCTION = opmap["CALL_FUNCTION"]
CALL_FLAG_VAR = 1
CALL_FLAG_KW = 2


COMPARE = {
    cmp_op.index("<"): (lambda a, b: a < b),
    cmp_op.index("<="): (lambda a, b: a <= b),
    cmp_op.index("=="): (lambda a, b: a == b),
    cmp_op.index("!="): (lambda a, b: a != b),
    cmp_op.index(">"): (lambda a, b: a > b),
    cmp_op.index(">="): (lambda a, b: a >= b),
    cmp_op.index("in"): (lambda a, b: a in b),
    cmp_op.index("not in"): (lambda a, b: a not in b),
    cmp_op.index("is"): (lambda a, b: a is b),
    cmp_op.index("is not"): (lambda a, b: a is not b),
    cmp_op.index("exception match"): (lambda a, b: a == b),
    cmp_op.index("BAD"): (lambda a, b: False)
}


class CodeInterpreter(Interpreter):
Пример #3
0
 def compare(self, word):
     return opmap["COMPARE_OP"], cmp_op.index(word)
Пример #4
0
def _compare(self, op: int, cmp: str):
    self.append(op)
    self.append(cmp_op.index(cmp))
    return self
Пример #5
0
       SLICE+0 => slice_0
    """
    opname = opname.replace('+', '_')
    return opname.lower()

def _make_op_ids():
    ids_by_code = {}
    for code, name in enumerate(opname):
        if not name.startswith('<'): # missing code
            ids_by_code[ code ] = _opname2id(name)
    return ids_by_code

# Dict of operation name by code
opcode_method_names = _make_op_ids()

CMP_LT = cmp_op.index('<')
CMP_LE = cmp_op.index('<=')
CMP_EQ = cmp_op.index('==')
CMP_NE = cmp_op.index('!=')
CMP_GT = cmp_op.index('>')
CMP_GE = cmp_op.index('>=')
CMP_IN = cmp_op.index('in')
CMP_NOT_IN = cmp_op.index('not in')
CMP_IS = cmp_op.index('is')
CMP_IS_NOT = cmp_op.index('is not')
CMP_EXCEPTION_MATCH = cmp_op.index('exception match')


def opcode_decoder( co_code, next_instr ):
    opcode = co_code[next_instr]
    next_instr += 1
Пример #6
0
import sys
import types
from collections import OrderedDict
from dis import opmap
from opcode import cmp_op

from .interpreter import Interpreter


CALL_FUNCTION = opmap['CALL_FUNCTION']
CALL_FLAG_VAR = 1
CALL_FLAG_KW = 2


COMPARE = {
    cmp_op.index('<'): (lambda a, b: a < b),
    cmp_op.index('<='): (lambda a, b: a <= b),
    cmp_op.index('=='): (lambda a, b: a == b),
    cmp_op.index('!='): (lambda a, b: a != b),
    cmp_op.index('>'): (lambda a, b: a > b),
    cmp_op.index('>='): (lambda a, b: a >= b),
    cmp_op.index('in'): (lambda a, b: a in b),
    cmp_op.index('not in'): (lambda a, b: a not in b),
    cmp_op.index('is'): (lambda a, b: a is b),
    cmp_op.index('is not'): (lambda a, b: a is not b),
    cmp_op.index('exception match'): (lambda a, b: a == b),
    cmp_op.index('BAD'): (lambda a, b: False)
}


class CodeInterpreter(Interpreter):
Пример #7
0
import types
import dis

from dis import opmap

from collections import OrderedDict
from opcode import cmp_op

from .interpreter import Interpreter

CALL_FUNCTION = opmap["CALL_FUNCTION"]
CALL_FLAG_VAR = 1
CALL_FLAG_KW = 2

COMPARE = {
    cmp_op.index("<"): (lambda a, b: a < b),
    cmp_op.index("<="): (lambda a, b: a <= b),
    cmp_op.index("=="): (lambda a, b: a == b),
    cmp_op.index("!="): (lambda a, b: a != b),
    cmp_op.index(">"): (lambda a, b: a > b),
    cmp_op.index(">="): (lambda a, b: a >= b),
    cmp_op.index("in"): (lambda a, b: a in b),
    cmp_op.index("not in"): (lambda a, b: a not in b),
    cmp_op.index("is"): (lambda a, b: a is b),
    cmp_op.index("is not"): (lambda a, b: a is not b),
    cmp_op.index("exception match"): (lambda a, b: a == b),
    cmp_op.index("BAD"): (lambda a, b: False)
}


class CodeInterpreter(Interpreter):