Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/22/11 15:07:20 (13 years ago)
Author:
mkommend
Message:

#1418: Corrected ADFs and adapted unit tests.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/ArchitectureManipulators/ArgumentDuplicater.cs

    r5733 r5792  
    108108      selectedDefunBranch.Grammar.AddSymbol(newArgSymbol);
    109109      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);
    115112      selectedDefunBranch.NumberOfArguments++;
    116113
     
    122119        if (matchingInvokeSymbol != null) {
    123120          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);
    128125          }
    129126        }
Note: See TracChangeset for help on using the changeset viewer.