Commit 32bcb20be766cec240fadf172191e69b92c25ac5

Authored by Salvador Abreu
1 parent 8515b5f5
Exists in master

constraints will be replaced by cg_coverage*/3

Showing 1 changed file with 14 additions and 4 deletions   Show diff stats
fz/paccs/output.pl
@@ -17,10 +17,12 @@ cg_emit(PS, VS, CS, G, ST) --> @@ -17,10 +17,12 @@ cg_emit(PS, VS, CS, G, ST) -->
17 17
18 % == DCGs for code generation ================================================= 18 % == DCGs for code generation =================================================
19 19
  20 +
20 % -- predicates --------------------------------------------------------------- 21 % -- predicates ---------------------------------------------------------------
21 22
22 cg_preds(_PS, _ST) --> []. 23 cg_preds(_PS, _ST) --> [].
23 24
  25 +
24 % -- variables ---------------------------------------------------------------- 26 % -- variables ----------------------------------------------------------------
25 27
26 cg_vars(OP, [V|Vs], ST) --> cg_var(OP, V, ST), cg_vars(OP, Vs, ST). 28 cg_vars(OP, [V|Vs], ST) --> cg_var(OP, V, ST), cg_vars(OP, Vs, ST).
@@ -71,12 +73,19 @@ cg_constant_list([C|Cs], PFX) --> @@ -71,12 +73,19 @@ cg_constant_list([C|Cs], PFX) -->
71 73
72 cg_constant(lit(N,int)) --> { format_to_codes(S, "~w", [N]) }, S. 74 cg_constant(lit(N,int)) --> { format_to_codes(S, "~w", [N]) }, S.
73 75
  76 +
74 % -- constraints -------------------------------------------------------------- 77 % -- constraints --------------------------------------------------------------
75 78
76 -cg_constrs([C|Cs], ST) --> cg_constr(C, ST), cg_constrs(Cs, ST).  
77 -cg_constrs([], _) --> []. 79 +cg_constrs([], _) --> {!}, [].
  80 +cg_constrs(CS, ST) --> cg_coverage(CS, CR, ST), cg_constrs(CR, ST).
  81 +
  82 +% ++ cg_coverage(CI, CO, ST) [DCG] - - - - - - - - - - - - - - - - - - - - - -
  83 +%
  84 +% emit an instruction which partly covers CI, leaving CO untreated
  85 +
  86 +cg_coverage([_C|CS], CS, _ST) --> []. % FIXME: temporary
78 87
79 -cg_constr(_C, _ST) --> []. % FIXME: temporary 88 +% cg_coverage(CI, CO, ST) --> [].
80 89
81 % -- goal --------------------------------------------------------------------- 90 % -- goal ---------------------------------------------------------------------
82 91
@@ -84,7 +93,8 @@ cg_goal(solve(satisfy,_), VS, ST) --> % FIXME: add minimize and maximize @@ -84,7 +93,8 @@ cg_goal(solve(satisfy,_), VS, ST) --> % FIXME: add minimize and maximize
84 "\n", 93 "\n",
85 " if (fd_solve()) {\n", 94 " if (fd_solve()) {\n",
86 cg_var_print(VS, ST, " "), 95 cg_var_print(VS, ST, " "),
87 - " }\n". 96 + " }\n",
  97 + " fd_end();\n".
88 98
89 cg_var_print([], _, _) --> []. 99 cg_var_print([], _, _) --> [].
90 cg_var_print([var(N,_,_,A)|Vs], ST, PFX) --> 100 cg_var_print([var(N,_,_,A)|Vs], ST, PFX) -->