Changeset 5792 for branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/ArchitectureManipulators/ArgumentDuplicater.cs
- Timestamp:
- 03/22/11 15:07:20 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/ArchitectureManipulators/ArgumentDuplicater.cs
r5733 r5792 108 108 selectedDefunBranch.Grammar.AddSymbol(newArgSymbol); 109 109 selectedDefunBranch.Grammar.SetSubtreeCount(newArgSymbol, 0, 0); 110 // allow the argument as child of any other symbol 111 foreach (var symb in selectedDefunBranch.Grammar.Symbols) 112 for (int i = 0; i < selectedDefunBranch.Grammar.GetMaximumSubtreeCount(symb); i++) { 113 selectedDefunBranch.Grammar.AddAllowedChildSymbol(symb, newArgSymbol, i); 114 } 110 // allow the duplicated argument as child of all other arguments where the orginal argument was allowed 111 GrammarModifier.SetAllowedParentSymbols(selectedDefunBranch.Grammar, selectedArgumentSymbol, newArgSymbol); 115 112 selectedDefunBranch.NumberOfArguments++; 116 113 … … 122 119 if (matchingInvokeSymbol != null) { 123 120 subtree.Grammar.SetSubtreeCount(matchingInvokeSymbol, selectedDefunBranch.NumberOfArguments, selectedDefunBranch.NumberOfArguments); 124 foreach (var child in subtree.Grammar.GetAllowedChildSymbols(subtree.Symbol, 0)) {125 for (int i = 0; i < subtree.Grammar.GetMaximumSubtreeCount(matchingInvokeSymbol); i++) {126 subtree.Grammar.AddAllowedChildSymbol(matchingInvokeSymbol, child, i);127 }121 foreach (var symb in subtree.Grammar.Symbols) { 122 if (symb is StartSymbol || symb is ProgramRootSymbol) continue; 123 if (subtree.Grammar.IsAllowedChildSymbol(matchingInvokeSymbol, symb, selectedArgumentSymbol.ArgumentIndex)) 124 subtree.Grammar.AddAllowedChildSymbol(matchingInvokeSymbol, symb, newArgumentIndex); 128 125 } 129 126 }
Note: See TracChangeset
for help on using the changeset viewer.