def t_BOOLNUM(t):
r'[01]B'
- t.value = int(t.value[0])
+ t.value = (int(t.value[0]) == 1)
return t
def t_INTNUM(t):
elif statement[0] == 'internal':
return ' %s %s {return %s;}' % \
(returntypes.get(statement[1], normalmode), print_expr(('apply', statement[1], statement[2])), print_expr(statement[3]))
+ elif statement[0] == 'otherwise':
+ return 'else {'
elif statement[0] == 'pause':
return('printf("%o", ' + print_expr(statement[1]) + '); getchar();')
+ elif statement[0] == 'print':
+ (fmt, types) = fmt_convert(format[statement[1]])
+ if len(statement) < 3:
+ return 'printf("' + fmt + '");'
+ else:
+ return 'printf("' + fmt + '", ' + ', '.join(map(print_expr, statement[2:])) + ');'
elif statement[0] == 'read':
(fmt, types) = fmt_convert(format[statement[1]], write=False)
return 'scanf("' + fmt + '", ' + ', '.join(map(lambda x: '&'+x, statement[2:])) + ');'
return "return %s;" % print_expr(statement[1])
elif statement[0] == 'or':
return 'else if (' + print_expr(statement[2]) + ') {'
- elif statement[0] == 'otherwise':
- return 'else {'
- elif statement[0] == 'print':
- (fmt, types) = fmt_convert(format[statement[1]])
- if len(statement) < 3:
- return 'printf("' + fmt + '");'
- else:
- return 'printf("' + fmt + '", ' + ', '.join(map(print_expr, statement[2:])) + ');'
elif statement[0] == 'substitution':
return statement[1] + ' = ' + print_expr(statement[2]) + ';'
elif statement[0] == 'whenever':