Commit 51e810c0697d51e20f48d239323c63580d4c2df0
1 parent
567a1567
Exists in
master
give usage example in README
sample output new in git
Showing
3 changed files
with
36 additions
and
5 deletions
Show diff stats
fz/README
| 1 | +Sample usage: | ||
| 2 | + | ||
| 3 | + ./fzp < examples/aust.fzn | ./fz-paccs load name type code halt | ||
| 4 | + | ||
| 5 | +Notes: | ||
| 6 | + | ||
| 1 | - AST nodes for fzn parser | 7 | - AST nodes for fzn parser |
| 2 | 8 | ||
| 3 | TYPE : VALUE | 9 | TYPE : VALUE |
| 4 | 10 | ||
| 5 | - acceptable types: | 11 | - acceptable types: |
| 6 | 12 | ||
| 7 | -- driver process fznslurp: | 13 | +- driver process fz-BACK (BACK is back-end specific): |
| 8 | 14 | ||
| 9 | reads stdin (as produced by bison-generated parser), which results | 15 | reads stdin (as produced by bison-generated parser), which results |
| 10 | in a Prolog term which is the AST. It then does semantic analysis | 16 | in a Prolog term which is the AST. It then does semantic analysis |
| @@ -0,0 +1,25 @@ | @@ -0,0 +1,25 @@ | ||
| 1 | +#include "paccs.h" | ||
| 2 | + | ||
| 3 | +main() | ||
| 4 | +{ | ||
| 5 | + int i, j; | ||
| 6 | + fd_int t = fd_new(1, 3); | ||
| 7 | + fd_int v = fd_new(1, 3); | ||
| 8 | + fd_int nsw = fd_new(1, 3); | ||
| 9 | + fd_int q = fd_new(1, 3); | ||
| 10 | + fd_int sa = fd_new(1, 3); | ||
| 11 | + fd_int nt = fd_new(1, 3); | ||
| 12 | + fd_int wa = fd_new(1, 3); | ||
| 13 | + int X_INTRODUCED_0[2] = { 1, -1 }; | ||
| 14 | + | ||
| 15 | + if (fd_solve()) { | ||
| 16 | + fd_println(t); | ||
| 17 | + fd_println(v); | ||
| 18 | + fd_println(nsw); | ||
| 19 | + fd_println(q); | ||
| 20 | + fd_println(sa); | ||
| 21 | + fd_println(nt); | ||
| 22 | + fd_println(wa); | ||
| 23 | + } | ||
| 24 | +} | ||
| 25 | + |
fz/paccs/output.pl
| @@ -11,7 +11,7 @@ cg_emit(PS, VS, CS, G, ST) --> | @@ -11,7 +11,7 @@ cg_emit(PS, VS, CS, G, ST) --> | ||
| 11 | cg_preds(PS, ST), | 11 | cg_preds(PS, ST), |
| 12 | cg_vars(decl, VS, ST), | 12 | cg_vars(decl, VS, ST), |
| 13 | cg_vars(init, VS, ST), | 13 | cg_vars(init, VS, ST), |
| 14 | - %% cg_constrs(CS, ST), | 14 | + cg_constrs(CS, ST), |
| 15 | cg_goal(G, VS, ST), | 15 | cg_goal(G, VS, ST), |
| 16 | cg_suffix. | 16 | cg_suffix. |
| 17 | 17 | ||
| @@ -52,9 +52,9 @@ cg_var(init, var(N,array(T,ALB,AUB),[],_), _ST) --> !, | @@ -52,9 +52,9 @@ cg_var(init, var(N,array(T,ALB,AUB),[],_), _ST) --> !, | ||
| 52 | cg_var(decl, var(N,array(_T,LB,UB),lit(INIT,array(_)),_), _ST) --> | 52 | cg_var(decl, var(N,array(_T,LB,UB),lit(INIT,array(_)),_), _ST) --> |
| 53 | { nonvar(INIT), INIT=[_|_] }, !, | 53 | { nonvar(INIT), INIT=[_|_] }, !, |
| 54 | { SZ is UB-LB+1, | 54 | { SZ is UB-LB+1, |
| 55 | - format_to_codes(S, " int ~w[~d] = {\n", [N, SZ]) }, | 55 | + format_to_codes(S, " int ~w[~d] = {", [N, SZ]) }, |
| 56 | S, | 56 | S, |
| 57 | - cg_constant_list(INIT, " "), | 57 | + cg_constant_list(INIT, " "), |
| 58 | " };\n". | 58 | " };\n". |
| 59 | 59 | ||
| 60 | cg_var(init, var(_N,array(_T,_LB,_UB),lit(INIT,array(_)),_), _ST) --> | 60 | cg_var(init, var(_N,array(_T,_LB,_UB),lit(INIT,array(_)),_), _ST) --> |
| @@ -80,7 +80,7 @@ cg_constr(_C, _ST) --> []. % FIXME: temporary | @@ -80,7 +80,7 @@ cg_constr(_C, _ST) --> []. % FIXME: temporary | ||
| 80 | 80 | ||
| 81 | % -- goal --------------------------------------------------------------------- | 81 | % -- goal --------------------------------------------------------------------- |
| 82 | 82 | ||
| 83 | -cg_goal(solve(satisfy,_), VS, ST) --> | 83 | +cg_goal(solve(satisfy,_), VS, ST) --> % FIXME: add minimize and maximize |
| 84 | "\n", | 84 | "\n", |
| 85 | " if (fd_solve()) {\n", | 85 | " if (fd_solve()) {\n", |
| 86 | cg_var_print(VS, ST, " "), | 86 | cg_var_print(VS, ST, " "), |