#icpc2013autumnf. [icpc2013autumn_f]Shipura

[icpc2013autumn_f]Shipura

问题描述

Dr. Suposupo 开发了一种叫做 Shipura 的编程语言。Shipura 只支持一个二元运算符 tt>>{\\tt >>} 和一个一元函数 ttS<>{\\tt S<\\ >}

xtt>>yx {\\tt >>} y 被计算为 lfloorx/2yrfloor\\lfloor x / 2^y \\rfloor(即,x/2yx / 2^y 的最大整数部分),而 ttS<xtt>{\\tt S<} x {\\tt >} 被计算为 x2bmod1,000,000,007x^2 \\bmod 1{,}000{,}000{,}007(即,x2x^2 除以 1,000,000,0071{,}000{,}000{,}007 的余数)。

运算符 tt>>{\\tt >>} 是左结合的。例如,表达式 xtt>>ytt>>zx {\\tt >>} y {\\tt >>} z 被解释为 (xtt>>y)tt>>z(x {\\tt >>} y) {\\tt >>} z,而不是 xtt>>(ytt>>z)x {\\tt >>} (y {\\tt >>} z)。注意,这些括号在实际的 Shipura 表达式中并不存在。

Shipura 的语法给出如下(BNF 形式):

expr   ::= term | expr sp ">>" sp term
term   ::= number | "S" sp "<" sp expr sp ">"
sp     ::= "" | sp " "
number ::= digit | number digit
digit  ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"```

该语法的起始符号是 $\\tt expr$,表示 Shipura 中的一个表达式。另外,$\\tt number$ 是一个介于 $0$ 和 $1{,}000{,}000{,}000$(含)之间的整数,没有额外的前导零。

编写一个程序来计算 Shipura 表达式的值。

---

### 输入

输入是一系列数据集。每个数据集由一行表示,其中包含一个有效的 Shipura 表达式。

包含单个 ${\\tt \\#}$ 的行表示输入结束。可以假设数据集的数量最多为 $100$,输入文件的总大小不超过 $2{,}000{,}000$ 字节。

### 输出

对于每个数据集,输出一行,包含表达式的计算值。

--- 

### 样例输入

```plain
S< S< 12 >> 2 > >
123 >> 1 >> 1
1000000000   >>129
S<S<S<S<S<2>>>>>
S  <S< S<2013    >>> 11 >>> 10 >
#```

### 样例输出

```plain
81
30
0
294967268
14592400```

---

### 资源名称

[JAG Practice Contest for ACM-ICPC Asia Regional 2013](http://acm-icpc.aitea.net/index.php?2013%2FPractice%2F%CC%CF%B5%BC%C3%CF%B6%E8%CD%BD%C1%AA)