Commit 32bcb20be766cec240fadf172191e69b92c25ac5
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) --> |