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

Reply via email to