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 |