On Mon, Nov 3, 2014 at 1:56 PM, Prathamesh Kulkarni <bilbotheelffri...@gmail.com> wrote: > (had sent it earlier by private mail). > > The attached patch supports operator-list and it's use in for. > For now, operator-list is rejected in expression.
Ok. > This patch also allows user-defined operator to be used as operator-list > (user-defined ops are really temporary or "scoped" operator-lists). > (for op (plus minus) > op2 (op...) > (simplify > ...)) > > Should that be supported or rejected ? I've made it supported, but not in the way you implemented it. Instead I am only expanding operator lists. Thus (for op (plus minus) (for op2 (minus op) ... will iterate (op, op2) (plus, minus) (minus, minus) (plus, plus) (minus, minus). I think that makes more sense(?) but it's maybe too confusing as well so eventually we should reject this. I've adapted the patch slightly, using safe_splice, adding a comment and avoiding a long line. I've also used an example operator list in match-builtin.pd instead where it shows the obvious improvement we're going to implement. Committed. Thanks, Richard. 2014-11-04 Prathamesh Kulkarni <bilbotheelffri...@gmail.com> * genmatch.c (user_id): Add new member is_oper_list. (user_id::user_id): Add new default argument. (parser::parse_operator_list): New function. (parser::parse_for): Allow operator-list. (parser::parse_pattern): Call parser::parse_operator_list. (parser::parse_operation): Reject operator-list. * match-builtin.pd: Define operator lists POWs, CBRTs and SQRTs. (gmail is too stupid to attach stuff it seems) > * genmatch.c > (user_id): Add new member is_oper_list. > (user_id::user_id): Add new default argument. > (parser::parse_operator_list): New function. > (parser::parse_for): Allow operator-list. > (parser::parse_pattern): Call parser::parse_operator_list. > (parser::parse_operation): Reject operator-list. > > * match-comparison.pd > Define operator-lists eq_ops and cc and use them in patterns. > > Thanks, > Prathamesh