Function opg::gen_firstvt [−][src]
pub(crate) fn gen_firstvt(
productions: &Vec<Production>,
nts: &HashSet<String>
) -> HashMap<String, HashSet<String>>
Generate FIRSTVT set for every non-terminals.
Input
productions the vector of struct Production
nts the non-terminal set, which could be generated 
from the function get_non_terminals(). 
Return
firstvt the set of FIRSTVT
for all terminals.
Example
let firstvt:HashMap<String, HashSet<String>> = gen_firstvt(&productions, &nts);
Principles
Go through every production and search the following patterns:
- U => U_1y
 - U => U_1Ty
 - U => Ty
 
call dfs::compose_element() 
to get the final result.