UVA327 Evaluating Simple C Expressions

题目描述

你将给定若干个 C++ 表达式,请你求出每个表达式的值以及执行完表达式之后每个变量的值。

输入格式

以字符串的形式输入若干个 C++ 表达式,以 `EOF` 结尾。 输入的每个字符串中间可能包含空格,但在执行这些表达式时,请忽略这些空格。

输出格式

对于每一个表达式,第一行输出 `Expression: s`,其中 $s$ 表示原表达式。 第二行先输出 $4$ 个空格,输出 `value = x`,其中 $x$ 表示表达式的值。 随后若干行按照字典序输出每一个在表达式中出现过的变量在执行完表达式之后的值。每一行先输出 $4$ 个空格,然后输出 `a = x`,其中 $a$ 表示变量名,$x$ 表示变量的值。 ### 输入输出样例 #### 样例 #1 **输入** ``` a + b b - z a+b--+c++ c+f--+--a f-- + c-- + d-++e ``` **输出** ``` Expression: a + b value = 3 a = 1 b = 2 Expression: b - z value = -24 b = 2 z = 26 Expression: a+b--+c++ value = 6 a = 1 b = 1 c = 4 Expression: c+f--+--a value = 9 a = 0 c = 3 f = 5 Expression: f-- + c-- + d-++e value = 7 c = 2 d = 4 e = 6 f = 5 ```

说明/提示

- 变量仅可能是小写英文字母,且在执行每个表达式之前,从 `a` 到 `z` 的每个变量的值依次为 $1,2,\cdots,26$。保证每个变量在每个表达式中最多出现一次。 - 可能要用到的运算符仅包含 `+`、`-`、`++`、`--`。保证 `+` 和 `++`, `-` 和 `--` 不会连续出现,且不会出现有某个变量前面和后面同时存在 `++` 或 `--` 的情况。其中对于 `++` 和 `--`: - 如果 `++` 在变量的前面,则先将该变量的值加 $1$,再执行表达式。 - 如果 `--` 在变量的前面,则先将该变量的值减 $1$,再执行表达式。 - 如果 `++` 在变量的后面,则先执行表达式,再将该变量的值加 $1$。 - 如果 `--` 在变量的后面,则先执行表达式,再将该变量的值减 $1$。 对于所有数据,每个表达式的长度不超过 $110$。 Translated by Eason_AC