Ejemplo n.º 1
0
def extract_qstrs(source_files):
    def read_qstrs(f):
        with open(f) as f:
            vals = set()
            objs = set()
            for line in f:
                while line:
                    m = re.search(
                        r"MP_OBJ_NEW_QSTR\((MP_QSTR_[A-Za-z0-9_]*)\)", line)
                    if m:
                        objs.add(m.group(1))
                    else:
                        m = re.search(r"MP_QSTR_[A-Za-z0-9_]*", line)
                        if m:
                            vals.add(m.group())
                    if m:
                        s = m.span()
                        line = line[:s[0]] + line[s[1]:]
                    else:
                        line = ""
            return vals, objs

    static_qstrs = [
        "MP_QSTR_" + qstrutil.qstr_escape(q) for q in qstrutil.static_qstr_list
    ]

    qstr_vals = set()
    qstr_objs = set()
    for f in source_files:
        vals, objs = read_qstrs(f)
        qstr_vals.update(vals)
        qstr_objs.update(objs)
    qstr_vals.difference_update(static_qstrs)

    return static_qstrs, qstr_vals, qstr_objs
Ejemplo n.º 2
0
def read_qstr(f):
    ln = read_uint(f)
    data = str_cons(f.read(ln), 'utf8')
    qstr_esc = qstrutil.qstr_escape(data)
    global_qstrs.append(qstr_type(data, qstr_esc, 'MP_QSTR_' + qstr_esc))
    return len(global_qstrs) - 1
Ejemplo n.º 3
0
def read_qstr(f):
    ln = read_uint(f)
    data = str_cons(f.read(ln), 'utf8')
    qstr_esc = qstrutil.qstr_escape(data)
    global_qstrs.append(qstr_type(data, qstr_esc, 'MP_QSTR_' + qstr_esc))
    return len(global_qstrs) - 1
Ejemplo n.º 4
0
 def __init__(self, str):
     self.str = str
     self.qstr_esc = qstrutil.qstr_escape(self.str)
     self.qstr_id = 'MP_QSTR_' + self.qstr_esc
Ejemplo n.º 5
0
 def __init__(self, str):
     self.str = str
     self.qstr_esc = qstrutil.qstr_escape(self.str)
     self.qstr_id = 'MP_QSTR_' + self.qstr_esc