Пример #1
0
        public void Traverse(ASTNode node, Action <ASTNode> visitor)
        {
            visitor(node);

            foreach (ASTNode descendant in node.Descendants)
            {
                Traverse(descendant, visitor);
            }
            if (node.Parent != null && node.Parent.Token.Kind == TokenKind.Block && node == node.Parent.Descendants.Last())
            {
                Symbols.AscendScope();
            }
            else if (node.Token.Kind == TokenKind.Block && node.Descendants.Count == 0)
            {
                Symbols.AscendScope();
            }
        }