Modif des actions: elles prennent maintenant l'environnement de

parsing en argument et le repassent a peek_val. Ca donne du code plus
compact pour le compilo natif.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@93 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
master
Xavier Leroy 1995-07-12 14:29:52 +00:00
parent a26c95465f
commit bf380e0b18
2 changed files with 10 additions and 9 deletions

View File

@ -35,11 +35,11 @@ output()
output_trailing_text();
if (sflag)
fprintf(output_file,
"let yyact = Array.new %d (fun () -> (failwith \"parser\" : Obj.t))\n",
"let yyact = Array.new %d (fun _ -> (failwith \"parser\" : Obj.t))\n",
ntotalrules);
else
fprintf(output_file,
"let yyact = [|\n (fun () -> failwith \"parser\")\n");
"let yyact = [|\n (fun _ -> failwith \"parser\")\n");
output_semantic_actions();
if (!sflag)
fprintf(output_file, "|]\n");

View File

@ -1190,9 +1190,9 @@ copy_action()
fprintf(f, "(* Rule %d, file %s, line %d *)\n",
nrules-2, input_file_name, lineno);
if (sflag)
fprintf(f, "yyact.(%d) <- (fun () -> Obj.repr((", nrules-2);
fprintf(f, "yyact.(%d) <- (fun parser_env -> Obj.repr((", nrules-2);
else
fprintf(f, "; (fun () -> Obj.repr((");
fprintf(f, "; (fun parser_env -> Obj.repr((");
n = 0;
for (i = nitems - 1; pitem[i]; --i) ++n;
@ -1213,14 +1213,15 @@ loop:
unknown_rhs(i);
item = pitem[nitems + i - n - 1];
if (item->tag) {
fprintf(f, "(peek_val %d : %s)", n - i, item->tag);
fprintf(f, "(peek_val parser_env %d : %s)", n - i, item->tag);
} else {
if (item->class == TERM)
illegal_token_ref(i, item->name);
if (sflag)
fprintf(f, "(peek_val %d)", n - i);
fprintf(f, "(peek_val parser_env %d)", n - i);
else
fprintf(f, "(peek_val %d : '%s)", n - i, item->name);
fprintf(f, "(peek_val parser_env %d : '%s)",
n - i, item->name);
}
goto loop;
}
@ -1640,11 +1641,11 @@ make_goal()
"(* Entry %s *)\n", bp->name);
if (sflag)
fprintf(action_file,
"yyact.(%d) <- (fun () -> raise (YYexit (peek_val 0)))\n",
"yyact.(%d) <- (fun parser_env -> raise (YYexit (peek_val parser_env 0)))\n",
ntotalrules);
else
fprintf(action_file,
"; (fun () -> raise (YYexit (peek_val 0)))\n");
"; (fun parser_env -> raise (YYexit (peek_val parser_env 0)))\n");
ntotalrules++;
last_was_action = 1;
end_rule();