Antlr4.Tool.LeftRecursiveRule.GetAltLabels C# (CSharp) Method

GetAltLabels() public method

public GetAltLabels ( ) : IDictionary>>
return IDictionary>>
        public override IDictionary<string, IList<System.Tuple<int, AltAST>>> GetAltLabels()
        {
            IDictionary<string, IList<System.Tuple<int, AltAST>>> labels = new Dictionary<string, IList<System.Tuple<int, AltAST>>>();
            IDictionary<string, IList<System.Tuple<int, AltAST>>> normalAltLabels = base.GetAltLabels();
            if (normalAltLabels != null)
            {
                foreach (var pair in normalAltLabels)
                    labels[pair.Key] = pair.Value;
            }

            if (recPrimaryAlts != null)
            {
                foreach (LeftRecursiveRuleAltInfo altInfo in recPrimaryAlts)
                {
                    if (altInfo.altLabel != null)
                    {
                        IList<System.Tuple<int, AltAST>> pairs;
                        if (!labels.TryGetValue(altInfo.altLabel, out pairs) || pairs == null)
                        {
                            pairs = new List<System.Tuple<int, AltAST>>();
                            labels[altInfo.altLabel] = pairs;
                        }

                        pairs.Add(Tuple.Create(altInfo.altNum, altInfo.originalAltAST));
                    }
                }
            }
            if (recOpAlts != null)
            {
                for (int i = 0; i < recOpAlts.Count; i++)
                {
                    LeftRecursiveRuleAltInfo altInfo = recOpAlts.GetElement(i);
                    if (altInfo.altLabel != null)
                    {
                        IList<System.Tuple<int, AltAST>> pairs;
                        if (!labels.TryGetValue(altInfo.altLabel, out pairs) || pairs == null)
                        {
                            pairs = new List<System.Tuple<int, AltAST>>();
                            labels[altInfo.altLabel] = pairs;
                        }

                        pairs.Add(Tuple.Create(altInfo.altNum, altInfo.originalAltAST));
                    }
                }
            }
            if (labels.Count == 0)
                return null;
            return labels;
        }
    }