Beispiel #1
0
        public void TranslateSubNodes(ASTNodeList newNodes, IASTNode fromNode)
        {
            IASTNodeTranslator nodeTranslator;

            if (!string.IsNullOrEmpty(fromNode.Text) && NodeTranslators.TryGetValue(fromNode.Text, out nodeTranslator)) // Text property may add a space at the end, depending on the setting of AddSpace, so need to be trimmed
            {
                nodeTranslator.Translate(this, newNodes, fromNode.SubNodes, NodeFactory);
                return;
            }

            IASTNode newNode = fromNode.CloneWithoutSubNodes();

            newNodes.Add(newNode);
            if (fromNode.SubNodes == null || fromNode.SubNodes.Count == 0)
            {
                return;
            }

            foreach (var node in fromNode.SubNodes)
            {
                TranslateSubNodes(newNode.SubNodes, node);
            }
        }