public ISymbolicExpressionTree Parse(string str) { ISymbolicExpressionTreeNode root = programRootSymbol.CreateTreeNode(); ISymbolicExpressionTreeNode start = startSymbol.CreateTreeNode(); var allTokens = GetAllTokens(str).ToArray(); ISymbolicExpressionTreeNode mainBranch = ParseS(new Queue <Token>(allTokens)); // only a main branch was given => insert the main branch into the default tree template root.AddSubtree(start); start.AddSubtree(mainBranch); return(new SymbolicExpressionTree(root)); }
/// <summary> /// Transforms the tree model to a symbolic regression model /// </summary> /// <returns>A new symbolic regression model which matches the tree model</returns> public SymbolicRegressionModel CreateSymbolicRegressionModel() { var rootSy = new ProgramRootSymbol(); var startSy = new StartSymbol(); var varCondSy = new VariableCondition() { IgnoreSlope = true }; var constSy = new Constant(); var startNode = startSy.CreateTreeNode(); startNode.AddSubtree(CreateSymbolicRegressionTreeRecursive(tree, 0, varCondSy, constSy)); var rootNode = rootSy.CreateTreeNode(); rootNode.AddSubtree(startNode); return(new SymbolicRegressionModel(TargetVariable, new SymbolicExpressionTree(rootNode), new SymbolicDataAnalysisExpressionTreeLinearInterpreter())); }
public ISymbolicExpressionTree Import(string str) { str = str.Replace("(", " ( ").Replace(")", " ) "); ISymbolicExpressionTreeNode root = programRootSymbol.CreateTreeNode(); ISymbolicExpressionTreeNode start = startSymbol.CreateTreeNode(); ISymbolicExpressionTreeNode mainBranch = ParseSexp(new Queue <Token>(GetTokenStream(str))); if (mainBranch.Symbol is ProgramRootSymbol) { // when a root symbol was parsed => use main branch as root root = mainBranch; } else { // only a main branch was given => insert the main branch into the default tree template root.AddSubtree(start); start.AddSubtree(mainBranch); } return(new SymbolicExpressionTree(root)); }