#P1820. Expression

Expression

本题没有可用的提交语言。

题目描述

根据定义,符号表达式是:

a) 自然数;

b) 由字母组成的名称,用来标识另一个符号表达式;

c) 由0个或多个符号表达式组成的列表,表达式之间用空格隔开,列表由圆括号括起来。一个由3个元素组成的符号表达式的示例如下:(A 2 (3 (B)))。

一个定义将一个名称分配给一个符号表达式,其形式为:

Name = SymbolicExpression

如果两个符号表达式E1和E2满足以下条件,则认为它们是等价的:

  • E1是数字,E2是数字且它们的值相同;
  • E1和E2是两个相等符号表达式的名称;
  • E1和E2是等价的列表;如果两个列表相等,则它们包含相同数量的符号表达式,并且相应位置的表达式是等价的;
  • 等价关系是传递的(如果表达式E1等价于E2,且E2等价于E3,则推导出E1等价于E3);
  • 如果应用了规则a)-d)后无法决定表达式是否等价(或不等价),那么它们将被认为是等价的。

例如:

  • 符号表达式 (1 2) 不等于 (2 1)。
  • 符号表达式 (1 (2 3) 4) 和 (1 (2) (3 4)) 不等价。

对于以下定义:

A = B
B = (1 (2 abc))
abc = (1 34)
X = ((1 (2 abc)) (1 34))
Y = (A abc)
Z = (1 2 abc (1 34))

符号表达式 X 和 Y 是等价的,符号表达式 X 和 Z 不等价。

对于以下定义:

A = B
C = (D E)
B = (D E)

表达式 A 和 C 是等价的。

对于以下定义:

A 和 B 是等价的(根据规则e)。

一个查询用于测试两个符号表达式的等价性,其形式为:

Expression1 ? Expression2

查询的结果是0或1(如果表达式不等价,输出0;如果表达式等价,输出1)。

输入

输入包含多个符号表达式的定义,每个定义占一行,最后以“EOD”结束。之后是多个查询,每个查询占一行,以“EOE”结束。

输出

对于每个查询,输出一行,显示查询结果(0或1)。

示例输入1

A = 12
B = 13
BB = 12
Bbb = (12)
G = (1 (1 E))
c = (1 2 3)
D = (1 2 3)
dD = (1 2 6)
E = (1 E)
F = (1 E)
EOD
A ? B
A ? BB
C ? D
c ? DD
E ? E
F ? E
G ? E
BB ? bbb
EOE

示例输出1

0
1
1
0
1
1
1
0

数据来源

Romania OI 2002