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;
}
}