On 04/04/2009, at 7:08 AM, Emmanuel Onzon wrote: > > Non terminals too became strings: > > | NONTERMINAL (sr,s,p) -> > let nt = mapnt s in > let nt = > try dyp.add_nt nt "Obj_sexpr" > with Dyp.Constructor_mismatch _ -> failwith > ("CONSTRUCTOR MISMATCH " ^ s) > | Dyp.Bad_constructor _ -> failwith ("BAD CONSTRUCTOR > FOR " ^ s) > in > let ntpri = cal_priority priority_data p in > Dyp.Non_ter (nt,ntpri) > > becomes: > > | NONTERMINAL (sr,s,p) -> > let nt = mapnt s in > let ntpri = cal_priority p in > Dyp.Non_ter (nt,ntpri) > > > Watch out that in the new code: > > | NONTERMINAL (sr,s,p) -> > let nt = mapnt s in > let ntpri = cal_priority p in > Dyp.Non_ter (nt,ntpri) > > The binding of nt to "Obj_sexpr" has disappeared (because it is not > done with add_nt anymore). You must not forget to bind this nt to > "Obj_sexpr" with Bind_to_cons if nt is new. This must be done when > the calling user action returns its parser command list.
> 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. Erick missed that, but I fixed it .. it is VERY UGLY because basically EVERY production has to return every non-terminal in its RHS in a Bind_to_const list. So each non-terminal is bound on EVERY occurrence. DSSL structure could fix that by requiring all global non-terminals be defined, but it is still a pain because if you import another DSSL into this one, you have to bind every non-terminal in it (in case of recursion we can have forward references). however .. this change has had NO effect on the problem.. Dypgen is still throwing Not_found looking up the nt_table: OPEN SYNTAX HAS FINISHED, RETURNING RESULT TO DYPGEN Unexpected Lookup failure in nt_table (I added a diagnostic to all unguarded Hashtbl.find ..) -- john skaller skal...@users.sourceforge.net ------------------------------------------------------------------------------ _______________________________________________ Felix-language mailing list Felix-language@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/felix-language