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]`)
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();')