From: Eric S. Raymond Date: Sun, 1 Feb 2004 16:13:09 +0000 (+0000) Subject: Reorder internal functions. X-Git-Tag: 1.0~151 X-Git-Url: http://thyrsus.com/gitweb/?a=commitdiff_plain;h=c1f3505e09d6d845123b30d7ac0e2d729b26ee7a;p=mad.git Reorder internal functions. --- diff --git a/mad b/mad index ed6cd8c..fd08792 100755 --- a/mad +++ b/mad @@ -451,9 +451,17 @@ def analyze(): untyped.remove(var) else: format[var] = statement[2] + # Reorder code tuples so internal functions are just after entry points + for i in range(len(deck)): + (file, line, label, statement) = deck[i] + if statement[0] == 'entry': + lastentry = i + internalcount = 1 + elif statement[0] == 'internal': + deck.insert(lastentry + internalcount, deck.pop(i)) + internalcount += 1 # Do type deductions from format fields for card in deck: - (file, line, label, statement) = card if statement[0] == 'read': if statement[1] not in format: croak(card, "uninitialized format string" +`statement[1]`) @@ -685,7 +693,7 @@ def print_statement(statement): elif statement[0] == 'if': return 'if (' + print_expr(statement[1]) + ') ' + print_statement(statement[2]) elif statement[0] == 'internal': - return ' %s %s {return %s;}\n' % \ + return ' %s %s {return %s;}' % \ (mode(statement[3]), print_expr(('apply', statement[1], statement[2])), print_expr(statement[3])) elif statement[0] == 'pause': return('printf("%o", ' + print_expr(statement[1]) + '); getchar();')