#P2106. Boolean Expressions

    ID: 1107 传统题 1000ms 256MiB 尝试: 2 已通过: 1 难度: 10 上传者: 标签>#México and Central America 2004##布尔表达式求值#栈/递归

Boolean Expressions

描述

您将要编写的程序的目标是评估如下所示的布尔表达式:

表达式(VV):( V | V ) & FF & (FV)( F | V ) 其中,VV代表真True(True)FF 代表假False(False)。表达式可能包含以下运算符:

!! 表示非not(not) & 表示与and(and) | 表示或or(or) 可以使用括号对操作进行分组 在评估表达式时,需考虑运算符的优先级,其中! ! 的优先级最高,| 的优先级最低。程序必须为输入文件中的每个表达式输出V VF F 作为结果。

输入

表达式的长度可变,但符号数不会超过100 100 个。符号之间可以有任意数量的空格或完全没有空格,因此表达式的总字符长度未知。

输入文件中的表达式数量不固定,但不会超过 2020 个。每个表达式单独占一行,如下所示。

输出

对于每个测试表达式,输出"Expression" "Expression " 后跟其序号,":: ",以及对应测试表达式的结果值。连续测试表达式之间用换行分隔。

使用如下示例输出所示的格式。

输入数据 1

( V | V ) & F & ( F| V)
!V | V & V & !F & (F | V ) & (!F | F | !V & V)
(F&F|V|!V&!F&!(F|F&V))

输出数据 1

Expression 1: F
Expression 2: V
Expression 3: V

来源

墨西哥与中美洲 2004