#!/usr/bin/env python
-reserved = ('CONDITIONAL', 'DIMENSION', 'END', 'FOR', 'FORMAT',
- 'FUNCTION', 'INTEGER', 'INTERNAL', 'OF', 'PRINT', 'PROGRAM',
- 'READ', 'COMMENT', 'THROUGH', 'TO', 'TRANSFER', 'VALUES', 'VECTOR',
+reserved = ('CONDITIONAL', 'DIMENSION', 'END', 'FOR', 'FORMAT', 'FUNCTION',
+ 'INTEGER', 'INTERNAL', 'OF', 'PAUSE', 'PRINT', 'PROGRAM', 'READ',
+ 'COMMENT', 'THROUGH', 'TO', 'TRANSFER', 'VALUES', 'VECTOR',
'WHENEVER')
tokens = reserved + (
reserved_map = { }
for r in reserved:
reserved_map[r] = r
-refcount = {}
def t_NAME(t):
r'[A-Z][A-Z0-9]*(\.(?!P))?'
('right', 'ABS', 'UPLUS')
)
+refcount = {}
sourcefile = ""
sourceline = 0
deck = []
"statement : INTERNAL FUNCTION FUNCALL application EQUALS expression"
t[0] = ('function', t[3], tuple(t[4]), t[6])
-## READ FORMAT
-def p_read_format(t):
- 'statement : READ FORMAT NAME COMMA varlist'
- t[0] = ('read', t[3]) + tuple(t[5])
+## PAUSE
+def p_pause(t):
+ "statement : PAUSE expression"
+ t[0] == ('pause', t[1])
## PRINT FORMAT
def p_print_format(t):
'statement : COMMENT'
t[0] = ('remark',)
+## READ FORMAT
+def p_read_format(t):
+ 'statement : READ FORMAT NAME COMMA varlist'
+ t[0] = ('read', t[3]) + tuple(t[5])
+
## THROUGH
def p_through_for(t):
'statement : THROUGH NAME COMMA FOR NAME EQUALS expression COMMA expression COMMA expression'
return 'goto ' + statement[1] + ';'
elif statement[0] == 'if':
return 'if (' + print_expr(statement[1]) + ') ' + print_statement(statement[2])
+ elif statement[0] == 'pause':
+ return('printf("%o", ' + print_expr(statement[1]) + '); getchar();')
elif statement[0] == 'read':
return 'scanf("' + fmt_convert(format[statement[1]], write=False) + '", ' + ', '.join(map(lambda x: '&'+x, statement[2:])) + ');'
elif statement[0] == 'remark':