算符优先系列之(三)输入串分析

Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description

学过编译原理的菊苣们都知道算符优先文法,作为一个有点深度的分析方法,我们怎么能只止步于理论呢,实践才是王道哦。

已知文法G[S]的表达式和输入串,求输入串的分析过程表。因为某些特殊的原因,我们在这规定一下输入输出格式。

已知文法G[S]为:

S`->#S#(拓展文法,不是题目给出的文法)

S->a|@|(T)

T->T,S|S

输出的分析过程表从左到右分为6组,依次是步骤,栈,优先关系,当前符号,剩余输入串,移进或规约

步骤的标号从“1”(无引号)开始,规约时规定将可归约的项规约成非终结符“N”(无引号),当分析串分析成功时在移进或规约组显示“接受”(无引号)

Input

多组输入。第一行输入一个n,表示表达式的个数,接下来n行每行一个表达式(记得还有一个要在自己程序中添加的拓展文法哦),接下来第n+2行为输入串。

Output

根据上述的格式,输出输入串分析表(输出的格式用水平制表符\t)

Sample Input

2
S->a|@|(T)
T->T,S|S
(a,a)#

Sample Output

1	#	  <	  (	  a,a)#	  移进
2	#(	  <	  a	  ,a)#	  移进
3	#(a	  >	  ,	  a)#	  归约
4	#(N	  <	  ,	  a)#	  移进
5	#(N,	  <	  a	  )#	  移进
6	#(N,a     >	  )	  #	  归约
7	#(N,N     >       )	  #	  归约
8	#(N	  =	  )	  #	  移进
9	#(N)	  >	          #       归约
10	#N	  =	          #	  接受

Hint


Source