private void populateTreeV2Semantic(TreeNode root, Node2 tree) { for (int i = 0; i < tree.sons.Count; i++) { string nName = tree.sons[i].name; String attrs = ""; if (tree.sons[i].type != null) { attrs += " (type=" + tree.sons[i].type; } if (tree.sons[i].val != null) { attrs += ", val=" + tree.sons[i].val; } if (attrs != "") { attrs += ")"; } TreeNode newNode = new TreeNode(nName + attrs); root.Nodes.Add(newNode); populateTreeV2Semantic(newNode, tree.sons[i]); } if (tree.bro != null) { string nName = tree.bro.name; String attrs = ""; if (tree.bro.type != null) { attrs += " (type=" + tree.bro.type; } if (tree.bro.val != null) { attrs += ", val=" + tree.bro.val; } if (attrs != "") { attrs += ")"; } TreeNode newNode = new TreeNode(nName + attrs); root.Parent.Nodes.Add(newNode); populateTreeV2Semantic(newNode, tree.bro); } }