Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
10/14/21 17:59:53 (3 years ago)
Author:
dpiringe
Message:

#3136

  • changed the StructureTemplateView -> nodes of type SubFunctionTreeNode are now clickable
    • still need to overhaul the UI elements
  • added a way to parse SubFunctionTreeNode with a unique name in InfixExpressionParser
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/3136_Structural_GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Importer/InfixExpressionParser.cs

    r18065 r18067  
    8181    internal static readonly BidirectionalLookup<string, ISymbol>
    8282      knownSymbols = new BidirectionalLookup<string, ISymbol>(StringComparer.InvariantCulture, new SymbolComparer());
     83    internal static readonly SubFunctionSymbol subFunctionSymbol = new SubFunctionSymbol();
    8384
    8485    private Constant constant = new Constant();
     
    137138        { "XOR", new Xor()},
    138139        { "DIFF", new Derivative()},
    139         { "LAG", new LaggedVariable() },
    140         { "F", new SubFunctionSymbol() }
     140        { "LAG", new LaggedVariable() }/*,
     141        { "F", new SubFunctionSymbol() }*/
    141142      };
    142143
     
    341342
    342343    private ISymbol GetSymbol(string tok) {
    343       var symb = knownSymbols.GetByFirst(tok).FirstOrDefault();
    344       if (symb == null) throw new ArgumentException(string.Format("Unknown token {0} found.", tok));
    345       return symb;
     344      if(knownSymbols.ContainsFirst(tok))
     345        return knownSymbols.GetByFirst(tok).FirstOrDefault();
     346      else
     347        return subFunctionSymbol;
    346348    }
    347349
     
    453455            laggedVarNode.Lag = (int)Math.Round(sign * lagToken.doubleVal);
    454456            laggedVarNode.Weight = 1.0;
    455           } else if (funcNode.Symbol is SubFunctionSymbol) {
     457          } else if (funcNode.Symbol is SubFunctionSymbol) { // SubFunction
    456458            var subFunction = funcNode as SubFunctionTreeNode;
     459            subFunction.Name = next.strVal;
    457460            // input arguments
    458461            var args = ParseArgList(tokens);
    459             IList<string> functionArguments = new List<string>();
     462            IList<string> arguments = new List<string>();
    460463            foreach (var arg in args)
    461464              if(arg is VariableTreeNode varTreeNode)
    462                 functionArguments.Add(varTreeNode.VariableName);
    463             subFunction.FunctionArguments = functionArguments;
     465                arguments.Add(varTreeNode.VariableName);
     466            subFunction.Arguments = arguments;
    464467          } else {
    465468            // functions
Note: See TracChangeset for help on using the changeset viewer.