LL(1)文法系列(一)first集和follow集

Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description

已知文法G[S]的表达式,计算文法中终结符的first集和follow集。在文法G[S]中使用’@代表空。

 

现在我们规定文法G[S]中每个表达式只包含一个语句,也就是说不会含有S->A|B这样的表达式。

Input

第一行输入一个n(n<10),表示表达式的个数,接下来n行,每行一个表达式。终结符和非终结符的个数都小于10

Output

按照终结符和非终结符输入的顺序输出。如果集合中包含@’#’要求@’位于第一个,#’位于最后一个。
输出格式为:
first[c] = a b c
follow[c] = a b c
每个非终结符后都有空格

Sample Input

4
S->ABC
A->a
B->@
C->c

Sample Output

first[S] = a 
first[A] = a 
first[B] = @ 
first[C] = c 
follow[S] = # 
follow[A] = c 
follow[B] = c 
follow[C] = # 

Hint

 

Source