Ejemplo n.º 1
0
        private HashSet <LookaheadSymbol> TotalLookahead(LRConfig config)
        {
            bool flag = false;
            var  set  = new HashSet <LookaheadSymbol>();

            for (int offset = 0; (offset < config.CheckaheadCount()) && !flag; offset++)
            {
                var build = config.Checkahead(offset);
                ConfigTrackSource source = (build.Symbol.Type == ESymbolType.NonTerminal ? ConfigTrackSource.First : ConfigTrackSource.Config);

                foreach (var j in build.First)
                {
                    LookaheadSymbol item = new LookaheadSymbol(j);
                    if (item.Parent.Symbol.Type != ESymbolType.NonTerminal)
                    {
                        item.Configs.Add(new ConfigTrack(config, source));
                        set.Add(item);
                    }
                }
                flag = !build.Nullable;
            }

            if (!flag)
            {
                set.UnionWith(config.LookaheadSet);
            }
            return(set);
        }
Ejemplo n.º 2
0
 private bool PopulateLookahead(LRConfig config)
 {
     if (config.InheritLookahead)
     {
         bool flag = false;
         for (var i = 0; (i < config.CheckaheadCount()) & !flag; ++i)
         {
             var build = config.Checkahead(i);
             flag = !build.Nullable;
         }
         return(!flag);
     }
     return(false);
 }