## PRINT FORMAT
def p_print_format(t):
- 'statement : PRINT FORMAT varlist'
+ 'statement : PRINT FORMAT exprlist'
t[0] = ('print',) + tuple(t[3])
+def p_exprlist(t):
+ 'exprlist : expression'
+ t[0] = [t[1]]
+def p_exprlist_continue(t):
+ 'exprlist : exprlist COMMA expression'
+ t[0] = t[1] + [t[3]]
## REMARK
def p_remark1(t):
else:
return '***'+`t`
-def fmt_convert(str, write=True):
+def fmt_convert(fmt, write=True):
"Convert MAD format string to C printf/scanf"
res = ''
- str = str[1:-1]
+ str = fmt[1:-1]
while True:
if str[0] == '*':
break
str = str[i:]
elif str[0] == 'H':
if write:
- res += str[1:count+1]
+ res += str[1:count]
str = str[count+1:]
elif str[0] == 'I':
i = 1
res += ('%' + str[1:i] + 'd') * count
str = str[i:]
else:
- sys.stderr.write('"%s", line %d: invalid field code in format string %s!\n' % (sourcefile, sourceline, str))
+ sys.stderr.write('"%s", line %d: invalid field code %s at %d in format string %s!\n' % (sourcefile, sourceline, `str[0]`, len(fmt)-len(str), `fmt`))
sys.exit(1)
# Clip off format character
if write:
res = res[1:]
- res = res + '\\n'
+ res = res + '\\n'
return res
def print_statement(statement):
# Grotty hack to remove continuation digits
source = re.sub("\n [0-9] ", "\n ", source)
# A grotty hack to transform remarks
- source = re.sub('\tR', '\tREMARK', source)
- source = re.sub('\tREMARK (.*)', '\tREMARK $\\1$', source)
+ source = re.sub(r'\tR\n', '\tREMARK\n', source)
+ source = re.sub(r'\tR (.*)', '\tREMARK $\\1$', source)
# Equally grotty hack to add end-of-statement delimiters
source = re.sub('\n([A-Z]|\t)', ' ;\n\\1', source).rstrip() + ' ;\n'
# Parse