Hide

Problem C
Formelparser

Du ska skriva ett program som kan läsa in en formel för aritmetik, och beräkna dess värde enligt gängse regler. En formel kan ta följande form:

<Formel> ::= <Uttryck>  <Operator> <Uttryck>
<Operator> ::= + | - | *
<Uttryck> ::= <Tal> | "(" <Formel> ")"
<Tal> ::= <Siffra> | <Siffra><Siffra>
<Siffra> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Input

En textsträng med en formel enligt ovan. Notera att alla komponenter skiljs åt med mellanslag, se exemplen nedan. Ingen formel är mer än $10\, 000$ tecken lång.

Output

Ett heltal. Inga svar är större än att de ryms i datatypen long.

Sample Input 1 Sample Output 1
2 + ( 3 * ( ( 4 - 2 ) * ( 3 * 2 ) ) )
38
Sample Input 2 Sample Output 2
2 + ( ( ( 23 - 32 ) + ( 99 + 2 ) ) * ( 23 - 12 ) )
1014
Sample Input 3 Sample Output 3
2 - ( 3 * ( ( 24 - 22 ) * ( 3 * 2 ) ) )
-34

Please log in to submit a solution to this problem

Log in