Go: package main

import (
	"bufio"
	"fmt"
	"go/token"
	"go/types"
	"os"
	"strconv"
	"strings"
)

func main() {
	stdin := bufio.NewScanner(os.Stdin)
	stdin.Scan()
	n, _ := strconv.Atoi(stdin.Text())
	for i := 0; i < n; i++ {
		stdin.Scan()
		exp := strings.TrimRight(stdin.Text(), "=")
		res, _ := types.Eval(token.NewFileSet(), nil, token.NoPos, exp)
		fmt.Println(res.Value)
	}
}

C++: #include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <cstring>
#include <cstdlib>
#include <stack>

using namespace std;

int calc(string s){
	// ©gªÊÉÍÜêÄ¢éêÆAÅ éÆ«Ì
	if(s[0]>='0'&&s[0]<='9'){
		bool f=false;
		for(int i = 0; i < s.size(); i++){
			if(!(s[i]>='0'&&s[i]<='9')){
				f=true;
				break;
			}
		}
		if(!f){
			return atoi(s.c_str());
		}
	}
	else if(s[0]=='('){
		stack<char> sc;
		sc.push('(');
		for(int i = 1; i < s.size(); i++){
			if(s[i]==')')
				sc.pop();
			else if(s[i]=='('){
				sc.push('(');
			}
			if(sc.size()==0){
				if(i==s.size()-1){
					return calc(s.substr(1,s.size()-2));
				}
				else{
					break;
				}
			}
		}
	}
	stack<char> sc;
	// \¶ðÍÆÓ¡ðÍ
	for(int i = s.size()-1; i >= 0; i--){
		// ÊÌÌZqÍ³·é
		if(s[i]=='(')
			sc.pop();
		else if(s[i]==')'){
			sc.push(')');
		}
		else if(s[i]=='+'&&sc.size()==0){
			return calc(s.substr(0,i)) + calc(s.substr(i+1,s.size()-i-1));
		}
		else if(s[i]=='-'&&sc.size()==0){
			return calc(s.substr(0,i)) - calc(s.substr(i+1,s.size()-i-1));
		}
	}

	for(int i = s.size()-1; i >= 0; i--){
		// ÊÌÌZqÍ³·é
		if(s[i]=='(')
			sc.pop();
		else if(s[i]==')'){
			sc.push(')');
		}
		else if(s[i]=='*'&&sc.size()==0){
			return calc(s.substr(0,i)) * calc(s.substr(i+1,s.size()-i-1));
		}
		else if(s[i]=='/'&&sc.size()==0){
			return calc(s.substr(0,i)) / calc(s.substr(i+1,s.size()-i-1));
		}
	}
}

int main(){

	int n;
	cin>>n;
	for(int i = 0; i < n; i++){
		string str;
		cin>>str;
		cout<<calc(str.substr(0,str.size()-1))<<endl;
	}

	return 0;
}

C++: #include<iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<iomanip>
#include<math.h>
#include<complex>
#include<queue>
#include<deque>
#include<map>
#include<set>
#include<bitset>
using namespace std;
#define REP(i,m,n) for(int i=(int)m ; i < (int) n ; i++ )
#define rep(i,n) REP(i,0,n)
typedef long long ll;
typedef pair<int,int> pint;
const int inf=1e9+7;
const ll longinf=1LL<<60 ;
const ll mod=998244353 ;
int dx[4]={1,0,-1,0} , dy[4]={0,1,0,-1} ;

int sum(string s,int& i);
int mul(string s,int& i);
int bracket(string s,int& i);
int num(string s,int& i);

bool isdigit(char c){
    int x=c-'0';
    return 0<=x&&x<=9;
}

int sum(string s,int& i){
    int ret=mul(s,i);
    while(s[i]=='+'||s[i]=='-'){
        char op=s[i];
        i++;
        int res=mul(s,i);
        if(op=='+')ret+=res;
        else ret-=res;
    }
    return ret;
}
int mul(string s,int& i){
    int ret=bracket(s,i);
    while(s[i]=='*'||s[i]=='/'){
        char op=s[i];
        i++;
        int res=bracket(s,i);
        if(op=='*')ret*=res;
        else ret/=res;
    }
    return ret;
}

int bracket(string s,int& i){
    if(isdigit(s[i]))return num(s,i);
    i++;
    int ret=sum(s,i);
    i++;
    return ret;
}

int num(string s,int& i){
    int ret=s[i]-'0';
    i++;
    while(isdigit(s[i])){
        ret=10*ret+(int)(s[i]-'0');
        i++;
    }
    return ret;
}

int main(){
    int n;
    cin>>n;
    rep(j,n){
        string s;
        cin>>s;
        int i=0;
        cout<<sum(s,i)<<endl;
    }
}

C++: #include <bits/stdc++.h>
using namespace std;
#define int long long
#define stoi stoll
using ll=long long;
using vi=vector<int>;
using pii=pair<int,int>;
#define ALL(c) begin(c),end(c)
#define RALL(c) rbegin(c),rend(c)
#define ITR(i,b,e) for(auto i=(b);i!=(e);++i)
#define FORE(x,c) for(auto &x:c)
#define REPF(i,a,n) for(int i=a,i##len=(int)(n);i<i##len;++i)
#define REP(i,n) REPF(i,0,n)
#define REPR(i,n) for(int i=(int)(n);i>=0;--i)
#define SZ(c) ((int)c.size())
#define CONTAIN(c,x) (c.find(x)!=end(c))
#define OUTOFRANGE(y,x,h,w) (y<0||x<0||y>=h||x>=w)
#define dump(...)
const signed INF_=1001001001; const ll INF=1001001001001001001LL;
const int DX[9]={0,1,0,-1,1,1,-1,-1,0},DY[9]={-1,0,1,0,-1,1,1,-1,0};
template<class T> ostream& operator<<(ostream &os,const vector<T> &v) {
    ITR(i,begin(v),end(v))os<<*i<<(i==end(v)-1?"":" ");return os;}
template<class T> istream& operator>>(istream &is,vector<T> &v) {
    ITR(i,begin(v),end(v)) is>>*i;return is;}
template<class T,class U> istream& operator>>(istream &is, pair<T,U> &p) {
    is>>p.first>>p.second;return is;}
template<class T> bool chmax(T &a,const T &b){if(a<b){a=b;return 1;}return 0;}
template<class T> bool chmin(T &a,const T &b){if(a>b){a=b;return 1;}return 0;}
template<class T> using heap=priority_queue<T,vector<T>,greater<T>>;
struct{template<class T> operator T(){T x;cin>>x;return x;}} IN;
struct before_main_function {
    before_main_function() {
        cin.tie(0);ios::sync_with_stdio(false);
        cout<<setprecision(15)<<fixed;
        #define endl "\n"
    }
} before_main_function;
//------------------8<------------------------------------8<--------------------

/*
<expression> ::= <term> | <term> ('+' | '-') <term>
<term> ::= <factor> | <factor> ('*' | '/') <factor>
<factor> ::= <number> | '(' <expression> ')'
<number> ::= 0~9 | <number> <number>
*/
int expression(string &s,int &i);
int term(string &s,int &i);
int factor(string &s,int &i);
int number(string &s,int &i);

int expression(string &s,int &i) {
    int ret=term(s,i);
    while(s[i]=='+' || s[i]=='-') {
        char op=s[i++];
        int right=term(s,i);
        if(op=='+') ret+=right;
        else ret-=right;
    }
    return ret;
}
int term(string &s,int &i) {
    int ret=factor(s,i);
    while(s[i]=='*' || s[i]=='/') {
        char op=s[i++];
        int right=factor(s,i);
        if(op=='*') ret*=right;
        else ret/=right;
    }
    return ret;
}
int factor(string &s,int &i) {
    if(s[i]=='(') {
        i++;
        int expr=expression(s,i);
        i++;
        return expr;
    } else {
        return number(s,i);
    }
}
int number(string &s,int &i) {
    int num=0;
    while('0'<=s[i] && s[i]<='9') {
        num*=10;
        num+=s[i]-'0';
        i++;
    }
    return num;
}

int solve() {
    string s=IN;
    int i=0;
    return expression(s,i);
}
signed main() {
    int n=IN;
    while(n--) {
        cout<<solve()<<endl;
    }
    return 0;
}