private static BaseExpression GenerateRandomExpression(Random rnd, int lvl) { if (lvl <= 1) { var leafKind = rnd.Next(0, 1); if (leafKind == 0) { return(new IntegerExpression(rnd.Next())); } else { return(new VarExpression("v" + rnd.Next(0, 10))); } } var p = rnd.NextDouble(); if (p < 0.5) { var lhs = GenerateRandomExpression(rnd, rnd.Next(1, lvl - 1)); var rhs = GenerateRandomExpression(rnd, rnd.Next(1, lvl - 1)); BinopExpression.BinopType op = (BinopExpression.BinopType)rnd.Next(0, 5); return(new BinopExpression(lhs, rhs, op)); } else if (p < 0.75) { return(new IntegerExpression(rnd.Next())); } else { return(new VarExpression("v" + rnd.Next(0, 10))); } }
public OrphanOperator(BinopExpression.BinopType op) { this.op = op; }