#!/usr/bin/env python # -*- coding: utf-8 -*- # 括弧を理解する電卓(標準入力を使う) import sys import tpg class Calc(tpg.Parser): r""" separator space '\s+'; token real '\d+\.\d*|\.?\d+' float START/e -> EXPR/e ; EXPR/e -> TERM/e ( '\+' TERM/t $ e += t | '\-' TERM/t $ e -= t )* ; TERM/t -> FACT/t ( '\*' FACT/f $ t *= f | '\/' FACT/f $ t /= f )* ; FACT/f -> real/f | '\(' EXPR/f '\)' ; """ calc = Calc() for s in sys.stdin.readlines(): expr = s.strip() if not expr: break try: result = calc(expr) print expr, "=>", result except Exception, e: print expr, ":", e