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
[email protected]
------------------------------------------------------------------------------
_______________________________________________
Felix-language mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/felix-language