public void LinkLexicalEnvironments(RuleContext context, LexicalEnvironment parentEnvironment) { if (context is IScopedContext scoped) { parentEnvironment.AddChild(scoped.LexicalEnvironment); parentEnvironment = scoped.LexicalEnvironment; parentEnvironment.Context = context; } for (int i = 0; i < context.ChildCount; i++) { var child = context.GetChild(i); if (child is RuleContext ruleContext) { LinkLexicalEnvironments(ruleContext, parentEnvironment); } } }