From c1f3505e09d6d845123b30d7ac0e2d729b26ee7a Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Sun, 1 Feb 2004 16:13:09 +0000 Subject: [PATCH] Reorder internal functions. --- mad | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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();') -- 2.43.0