算符优先系列之(一)Firstvt和Lastvt集

Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description

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

已知文法G[S]的表达式,计算G[S]的Firstvt和Lastvt。因为某些特殊的原因,我们在这规定一下输入输出格式。

例如:

已知文法G[S]为:

S->a|@|(T)

T->T,S|S

首先先把各条件语句按照从左到右从上到下的方式分解和输出

S->a

S->@

S->(T)

T->T,S

T->S

对于输出首先输出FIRSTVT集然后输出LASTVT集,对于各自的集合的的输出按照非终结符从上向下的方式

Firstvt[S]:非终结符+空格的形式

Firstvt[T]:

Lastvt[S]:

Lastvt[T]:

Input

多组输入。第一行输入一个n,表示表达式的个数,接下来n行,每行一个表达式

Output

根据上述的格式,输出文法的Firstvt和Lastvt集合

Sample Input

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

Sample Output

Firstvt[S]:a @ ( 
Firstvt[T]:, a @ ( 
Lastvt[S]:a @ ) 
Lastvt[T]:, a @ )

Hint


Source