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