On 04/04/2009, at 7:08 AM, Emmanuel Onzon wrote: > and cal_priority must become: > > let cal_priority p = > match p with > | `No_prio -> No_priority > | `Eq_prio p -> Eq_priority p > | `Less_prio p -> Less_priority p > | `Lesseq_prio p -> Lesseq_priority p > | `Greater_prio p -> Greater_priority p > | `Greatereq_prio p -> Greatereq_priority p > > Instead of: > > let cal_priority priority_data p = > let cp p = > try find_priority priority_data p > with Not_found -> failwith ("Priority " ^ p ^ " not defined!") > in > match p with > | `No_prio -> No_priority > | `Eq_prio p -> Eq_priority (cp p) > | `Less_prio p -> Less_priority (cp p) > | `Lesseq_prio p -> Lesseq_priority (cp p) > | `Greater_prio p -> Greater_priority (cp p) > | `Greatereq_prio p -> Greatereq_priority (cp p) > > Off course it is probably better to code with the regular variants > directly instead of the polymorphic ones and get rid of cal_priority.
I think there is a reason to decouple the value used by Felix and that used by Dypgen: it keeps the typing decoupled. That my be important, remember Felix may *store* grammar productions (including any priority relations) on disk and reload them. > > Remark the empty list at the end of the 4-tuple that makes the rule. > It is a list of options for the rule (it is only useful when the > lexer generator is dypgen see 6.1 of the manual for more info). > > In addition to the new rule and the new action, define_scheme and > extend_grammar should return the list of string couples (nt,cons) > where nt is a new non terminal bind to the constructor cons, to > allow the user action to return the appropriate command Bind_to_cons. > What happens if the string is not new? add_nt just ignored it so it was always safe.. -- john skaller skal...@users.sourceforge.net ------------------------------------------------------------------------------ _______________________________________________ Felix-language mailing list Felix-language@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/felix-language