public Format.Schema.ExpressionV1 Serialize() { Format.Schema.ExpressionV1 expression = new Format.Schema.ExpressionV1(); var serializedOps = this.ops.Select(op => op.Serialize()); expression.Ops.AddRange(serializedOps); return(expression); }
static public Either <Errors.FormatError, Expression> DeserializeV1(Format.Schema.ExpressionV1 expression) { List <Op> result = new List <Op>(); foreach (Format.Schema.Op op in expression.Ops) { Either <Errors.FormatError, Op> deserialized = Op.DeserializeV1(op); if (deserialized.IsLeft) { return(deserialized.Left); } else { result.Add(deserialized.Right); } } return(new Expression(result)); }