From 3ece2113f2df4fd2c21fce3dfb9ae9757a4664bd Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Wed, 14 May 2014 21:35:21 +0100 Subject: [PATCH] math/mpgen, symm/multigen: Various minor cleanups. Reordering some code; deleting pointless code; some very minor bug fixing. Most notably, avoid a crash when reporting a row size mismatch, in Relation.addrow. --- math/mpgen | 6 +++--- symm/multigen | 25 ++++++++++++------------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/math/mpgen b/math/mpgen index 9a66af17..de03c3e6 100644 --- a/math/mpgen +++ b/math/mpgen @@ -320,7 +320,7 @@ class GroupTable (object): st.nextmp = 0 st.mpmap = { None: 'NO_MP', 0: 'ZERO_MP' } st.d = {} - me.st.name = None + st.name = None me._names = [] me._defs = set() me._slotmap = dict([(s.name, s) for s in me.slots]) @@ -407,6 +407,8 @@ class EnumSlot (BaseSlot): except KeyError: stdout.write('0') class MPSlot (BaseSlot): + def set(me, st, value): + super(MPSlot, me).set(st, long(value, 0)) def setup(me, st): super(MPSlot, me).setup(st) v = st.d.get(me) @@ -414,8 +416,6 @@ class MPSlot (BaseSlot): write_limbs('v%d' % st.nextmp, v) st.mpmap[v] = mp_body('v%d' % st.nextmp, v) st.nextmp += 1 - def set(me, st, value): - super(MPSlot, me).set(st, long(value, 0)) def write(me, st): stdout.write(st.mpmap[st.d.get(me)]) diff --git a/symm/multigen b/symm/multigen index d532cda7..20024bc5 100755 --- a/symm/multigen +++ b/symm/multigen @@ -53,8 +53,7 @@ COLMAP = {} class Cursor (object): def __init__(me, rel): me._rel = rel - me._i = 0 - me._row = rel[0] + me.reset() def step(me): me._i += 1 if me._i >= len(me._rel): @@ -107,7 +106,7 @@ class Relation (object): def addrow(me, row): if len(row) != len(me._head): die("mismatch: row `%s' doesn't match heading `%s'" % - (', '.join(row), ', '.join(head))) + (', '.join(row), ', '.join(me._head))) me._rows.append(row) def __len__(me): return len(me._rows) @@ -124,7 +123,6 @@ def read_immediate(word): def read_file(spec): file, head = spec.split(':', 1) rel = Relation([c.strip() for c in head.split(',')]) - cols = [c.strip() for c in head.split(',')] with open(file) as f: for line in f: line = line.strip() @@ -172,16 +170,17 @@ class SequenceTemplate (BasicTemplate): if len(seq) == 1: return seq[0] else: - me = super(SequenceTemplate, cls).__new__(cls, seq = seq, **kw) - tt = [] - cls = type(me) - for t in seq: - if isinstance(t, cls): tt += t._seq - else: tt.append(t) - me._seq = tt - return me + return super(SequenceTemplate, cls).__new__(cls, seq = seq, **kw) + def __init__(me, seq, **kw): super(SequenceTemplate, me).__init__(**kw) + tt = [] + cls = type(me) + for t in seq: + if isinstance(t, cls): tt += t._seq + else: tt.append(t) + me._seq = tt + def relations(me): rr = set() for t in me._seq: rr.update(t.relations()) @@ -290,8 +289,8 @@ def parse_text(ps): col = m.group(1) try: rel, i = COLMAP[col] except KeyError: ps.error("unknown column `%s'" % col) - wholeop = None ops = m.lastindex >= 2 and m.group(2) + wholeop = None if ops: for opname in ops[1:].split(':'): try: op = OPMAP[opname] -- 2.11.0