#icpc2014autumnh. [icpc2014autumn_h]Points and Lines

[icpc2014autumn_h]Points and Lines

翻译:有一天,你发现了一个古老的卷轴,上面写着奇怪的文字。 你揭示了文字实际上是一种表示宝藏位置的表达。该表达式由以下三个操作组成: 从两点出发,得出这两点所在的一条直线。 从一点到直线,得到一个点,这个点相对于直线上的给定点对称。 两条直线相交于一个点。 表达式的语法用下面的BNF表示:

<expression>      ::= <point>
<point>           ::= <point-factor> | <line> "@" <line-factor> | <line> "@" <point-factor> | <point> "@" <line-factor>
<point-factor>    ::= "(" <number> "," <number> ")" | "(" <point> ")"
<line>            ::= <line-factor> | <point> "@" <point-factor>
<line-factor>     ::= "(" <line> ")"
<number>          ::= <zero-digit> | <positive-number> | <negative-number>
<positive-number> ::= <nonzero-digit> | <positive-number> <digit>
<negative-number> ::= "-" <positive-number>
<digit>           ::= <zero-digit> | <nonzero-digit>
<zero-digit>      ::= "0"
<nonzero-digit>   ::= "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

每个或表示一个点,而每个或表示一个线。前一个<点因子> (X,Y)(X,Y)的概念表示在22维平面上,XX坐标为XX, YY坐标为YY的点。“@”表示对两个操作数的操作。由于每个操作通过其操作数的类型(即一个点或一条线)来区别于其他操作,所有这些操作都用相同的字符“@”表示。注意,“@”是左结合的,可以从BNF中看到。 你的任务是确定宝藏放在哪里。