算符优先分析

Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description

算法优先分析法是一种不太规范的自下而上分析方法,分析速度快,特别适用于表达式的分析。为了便于大家理解和实践算符优先分析法,本题目先给出一个算符优先文法,请大家构造该文法的算符优先关系表。然后请对给定的输入串进行算符优先分析,判断其是否为该文法的一个句子。
例如表达式文法:

EE+T |T

TT*F |F

    F(E) | i

该表达式文法是算符优先文法,其算符优先分析表为: 

注意:构造算符优先分析表前,请先拓广文法,例如引入非终结符Q,令Q#E#

Input

输入数据有多行。
第一行为一个整数n(n<=50),代表文法中产生式的个数,其中不包括拓广文法增加的产生式。
接下来的n行,每行给出一个产生式。
最后一行给出待分析的输入串,长度不超过50个符号。

Output

要求输出该文法的算符优先分析表,输出格式请参考上面的表格。
算符优先分析表中算符的排列顺序为输入文法时终结符出现的顺序,#出现在最后。
算符之间的优先关系,分别用=<>表示,代表相同、低于和高于的优先关系。
第一行先输出一个空格,然后按顺序输出所有算符。
第二行开始第一列为对应的算符,接着输出对应算法之间的优先关系。
输出的最后一行表示对输入串的分析是否成功结束,如果成功分析结束输出Success,表示该输入串是文法的一个句子,否者输出Fail,表示该输入串不是文法的一个句子。

Sample Input

6
E->E+T
E->T
T->T*F
T->F
F->(E)
F->i
i+i*i

Sample Output

+*()i#
+><<><>
*>><><>
(<<<=< 
)>> > >
i>> > >
#<<< <=
Success

Hint

 

Source