private DataNode PostfixData() { DataNode result = PrefixData(); while (PeekDataOperator()) { var op = DataOperator(); result = new DataFactor(result, op); } return(result); }
private Data Evaluate(DataNode node) { return(node switch { DataConcator dataConcator => Evaluate(dataConcator.Left).Concat(Evaluate(dataConcator.Right)), DataFactor dataFactor => Evaluate(dataFactor), TextDataPrimary dataPrimary => Evaluate(dataPrimary), RandDataPrimary randDataPrimary => Evaluate(randDataPrimary), PipeDataPrimary pipeDataPrimary => Evaluate(pipeDataPrimary), _ => throw new EvaluateException(nameof(DataNode)), });