def p_external_function(t):
"statement : EXTERNAL FUNCTION application"
t[0] = ('external_function', tuple(t[3]))
+def p_external_function0(t):
+ "statement : EXTERNAL FUNCTION"
+ t[0] = ('external_function', ())
## FUNCTION RETURN
def p_function_return(t):
t[0] = ('if', t[2], t[4])
def p_whenever_complex(t):
'statement : WHENEVER expression'
- t[0] = ('whenever', t[2], t[4])
+ t[0] = ('whenever', t[2])
def p_whenever_or(t):
'statement : OR WHENEVER expression'
t[0] = ('or', t[3])
else:
format[var] = statement[2]
# Reorder code tuples so internal functions are just after entry points
+ lastentry = -1
+ savelist = []
+ internalcount = 0
for i in range(len(deck)):
(file, line, label, statement) = deck[i]
if statement[0] == 'entry':
lastentry = i
internalcount = 1
+ for line in savelist:
+ deck.insert(i, deck.pop(line))
+ savelist = []
elif statement[0] == 'internal':
- deck.insert(lastentry + internalcount, deck.pop(i))
+ if lastentry != -1:
+ deck.insert(lastentry + internalcount, deck.pop(i))
+ else:
+ savelist.append(i)
internalcount += 1
# Reorder code tuples so SET LIST arrays are global.
firstentry = -1
deck[i] = (file, line, label, ('entry', name, prev[1]))
break
elif prev[0] == 'entry':
- croak(prev, "multiple ENTRY points are not supported")
+ croak(deck[i-j-1],"multiple ENTRY points are not supported")
else:
croak(deck[i], 'no EXTERNAL declaration matches this ENTRY')