Пример #1
0
        private static Dictionary <Nonterminal, Set <Terminal <TTokenKind> > > ComputeFollow(
            Grammar <TTokenKind, TNonterminal> grammar,
            IFirstSymbolsAnalyzer <TTokenKind> analyzer)
        {
            var(initFollowSets, graph) = DigraphAlgorithm.GetFollowGraph(grammar, analyzer);

            var followSets = DigraphAlgorithm.Traverse(graph, initFollowSets);

            var followMap = grammar.Nonterminals.ToDictionary(v => v, v => followSets[v.Index]);

            return(followMap);
        }