#include <cctype>
#include <iostream>
#include <stdexcept>
#include <string>

struct parse_error : std::runtime_error
{
	parse_error(std::string const& what)
		: runtime_error(what)
	{}
};

void skip_spaces(char const*& line)
{
	while(std::isspace(*line))
		++line;
}

// primary-expression = number | '(' sum ')'
// product = primary-expression ['*' | '/' product]
// sum = product ['+' | '-' sum]

double parse_number(char const*& line)
{
	return std::strtod(line, const_cast<char**>(&line));
}

double parse_sum(char const*& line);

double parse_primary_expression(char const*& line)
{
	skip_spaces(line);

	if(*line == '(')
	{
		double result = parse_sum(++line);
		skip_spaces(line);

		if(*line != ')')
			throw parse_error("expected closing parenthesis here: " + std::string(line));

		++line;
		return result;
	}

	else if(std::isdigit(*line))
		return parse_number(line);
}

double parse_product(char const*& line)
{
	double first = parse_primary_expression(line);
	skip_spaces(line);

	for(;;)
	{
		skip_spaces(line);

		if(*line == '*')
			first *= parse_primary_expression(++line);
		else if(*line == '/')
			first /= parse_primary_expression(++line);
		else break;
	}

	return first;
}

double parse_sum(char const*& line)
{
	double first = parse_product(line);

	for(;;)
	{
		skip_spaces(line);

		if(*line == '+')
			first += parse_product(++line);
		else if(*line == '-')
			first -= parse_product(++line);
		else break;
	}

	return first;
}

double parse(char const* line)
{
	double result = parse_sum(line);
	skip_spaces(line);

	if(*line)
		throw parse_error("unexpected character here: " + std::string(line));

	return result;
}

int main()
{
	for(std::string line; std::getline(std::cin, line);)
	{
		try
		{
			std::cout << parse(line.c_str()) << '\n';
		}

		catch(parse_error const& e)
		{
			std::cout << e.what() << '\n';
		}
	}
}