@@ -515,22 +515,22 @@ let reverse_agents_annotation parameters (error, remanent) =
515515
516516 error, { remanent with Cckappa_sig. agents_annotation }
517517
518- let scan_compil parameters error compil =
518+ let scan_compil_incremental parameters error compil remanent =
519519 let parameters =
520520 Remanent_parameters. set_trace parameters
521521 (local_trace || Remanent_parameters. get_trace parameters)
522522 in
523523 let also_explore_tested_agents =
524524 Remanent_parameters. lexical_analysis_of_tested_only_patterns parameters
525525 in
526+ let remanent = error, remanent in
526527 let scan_tested_mixture =
527528 if also_explore_tested_agents then
528529 scan_mixture
529530 else
530531 fun _parameters remanent _mixture ->
531532 remanent
532533 in
533- let remanent = empty_handler parameters error in
534534 let remanent =
535535 scan_declarations parameters remanent
536536 (compil.Ast. signatures : Ckappa_sig.agent_sig list )
@@ -548,3 +548,54 @@ let scan_compil parameters error compil =
548548 in
549549 let remanent = reverse_agents_annotation parameters (error, remanent) in
550550 remanent
551+
552+ let scan_compil parameters error compil =
553+ let error, remanent = empty_handler parameters error in
554+ scan_compil_incremental parameters error compil remanent
555+
556+ let scan_incremental_compil parameters error compil old_remanent =
557+ let error, remanent = scan_compil_incremental parameters error compil old_remanent in
558+ let () =
559+ if Remanent_parameters. get_trace parameters then
560+ let () =
561+ if remanent.Cckappa_sig. nvars > old_remanent.Cckappa_sig. nvars
562+ then
563+ let rec aux n acc =
564+ if n = old_remanent.Cckappa_sig. nvars then acc
565+ else aux (n-1 ) (n::acc)
566+ in
567+ let l = aux remanent.Cckappa_sig. nvars [] in
568+ Loggers. fprintf
569+ (Remanent_parameters. get_logger parameters)
570+ " New variables with id (%a)"
571+ (Format. pp_print_list Format. pp_print_int) l
572+ else ()
573+ in
574+ let doit get_field label =
575+ let () =
576+ if get_field remanent > get_field old_remanent
577+ then
578+ let rec aux n acc =
579+ if n = get_field old_remanent
580+ then acc
581+ else aux (n-1 ) (n::acc)
582+ in
583+ let l = aux (get_field remanent) [] in
584+ Loggers. fprintf
585+ (Remanent_parameters. get_logger parameters)
586+ " New %s with id (%a)"
587+ label
588+ (Format. pp_print_list Format. pp_print_int) l
589+ else ()
590+ in ()
591+ in
592+ let () = doit (fun x -> x.Cckappa_sig. nvars) " variables" in
593+ let () = doit (fun x -> Ckappa_sig. int_of_agent_name x.Cckappa_sig. nagents) " agent names" in
594+ let () = doit (fun x -> x.Cckappa_sig. nrules) " rules" in
595+ let () = doit (fun x -> Ckappa_sig. int_of_site_name x.Cckappa_sig. nsites) " site names" in
596+ ()
597+ else
598+ ()
599+ in
600+ error, remanent
601+
0 commit comments