Commit 5a2822a62f484985a7f0e873502dd3c05655c638
1 parent
65f52800
Exists in
master
variable declaration and constant initializers functioning
Showing
1 changed file
with
33 additions
and
7 deletions
Show diff stats
fz/out-paccs.pl
| @@ -4,9 +4,9 @@ | @@ -4,9 +4,9 @@ | ||
| 4 | 4 | ||
| 5 | cg_emit(fzn(preds(PS), vars(VS), constrs(CS), G), ST) :- | 5 | cg_emit(fzn(preds(PS), vars(VS), constrs(CS), G), ST) :- |
| 6 | cg_prefix(TEXT, PTXT), | 6 | cg_prefix(TEXT, PTXT), |
| 7 | - cg_preds(PS, ST, PTXT, VTXT), | ||
| 8 | - cg_vars(decl, VS, ST, VTXT, CTXT), | ||
| 9 | - cg_vars(init, VS, ST, VTXT, CTXT), | 7 | + cg_preds(PS, ST, PTXT, VTXT1), |
| 8 | + cg_vars(decl, VS, ST, VTXT1, VTXT2), | ||
| 9 | + cg_vars(init, VS, ST, VTXT2, CTXT), | ||
| 10 | %% cg_constrs(CTXT, GTXT, CS, ST), | 10 | %% cg_constrs(CTXT, GTXT, CS, ST), |
| 11 | %% cg_goal(GTXT, STXT, G, VS, ST), | 11 | %% cg_goal(GTXT, STXT, G, VS, ST), |
| 12 | %% cg_suffix(STXT, []), | 12 | %% cg_suffix(STXT, []), |
| @@ -28,21 +28,47 @@ cg_var(OP, var(N,int,I,A), ST) --> | @@ -28,21 +28,47 @@ cg_var(OP, var(N,int,I,A), ST) --> | ||
| 28 | cg_var(OP, var(N,int(1,999),I,A), ST). % FIXME | 28 | cg_var(OP, var(N,int(1,999),I,A), ST). % FIXME |
| 29 | 29 | ||
| 30 | cg_var(decl, var(N,int(LB,UB),_I,_A), _ST) --> | 30 | cg_var(decl, var(N,int(LB,UB),_I,_A), _ST) --> |
| 31 | - { format_to_codes(S, "fd_int ~w = fd_new(~d, ~d);\n", [N, LB, UB]) }, | 31 | + { format_to_codes(S, " fd_int ~w = fd_new(~d, ~d);\n", [N, LB, UB]) }, |
| 32 | S. | 32 | S. |
| 33 | 33 | ||
| 34 | cg_var(init, var(_,int(_,_),_,_), _) --> []. | 34 | cg_var(init, var(_,int(_,_),_,_), _) --> []. |
| 35 | 35 | ||
| 36 | -cg_var(decl, var(N,array(T,LB,UB),[],_), _ST) --> | 36 | +% -- array of variables - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
| 37 | + | ||
| 38 | +cg_var(decl, var(N,array(_T,LB,UB),[],_), _ST) --> !, | ||
| 37 | { SZ is UB-LB+1, | 39 | { SZ is UB-LB+1, |
| 38 | - format_to_codes(S, "fd_int ~w[~d];\n", [N, SZ]) }, | 40 | + format_to_codes(S, " fd_int ~w[~d];\n", [N, SZ]) }, |
| 39 | S. | 41 | S. |
| 40 | 42 | ||
| 41 | -cg_var(init, var(N,array(T,ALB,AUB),[],_), _ST) --> | 43 | +cg_var(init, var(N,array(T,ALB,AUB),[],_), _ST) --> !, |
| 42 | { SZ is AUB-ALB+1, bound(lb, T, LB), bound(ub, T, UB) }, | 44 | { SZ is AUB-ALB+1, bound(lb, T, LB), bound(ub, T, UB) }, |
| 43 | { format_to_codes(S1, " for (i=0; i<~d; ++i)\n", [SZ]) }, S1, | 45 | { format_to_codes(S1, " for (i=0; i<~d; ++i)\n", [SZ]) }, S1, |
| 44 | { format_to_codes(S2, " ~w[i] = fd_new(~d, ~d);\n", [N, LB, UB]) }, S2. | 46 | { format_to_codes(S2, " ~w[i] = fd_new(~d, ~d);\n", [N, LB, UB]) }, S2. |
| 45 | 47 | ||
| 48 | +% -- array of constants - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
| 49 | + | ||
| 50 | +cg_var(decl, var(N,array(_T,LB,UB),lit(INIT,array(_)),_), _ST) --> | ||
| 51 | + { nonvar(INIT), INIT=[_|_] }, !, | ||
| 52 | + { SZ is UB-LB+1, | ||
| 53 | + format_to_codes(S, " int ~w[~d] = {\n", [N, SZ]) }, | ||
| 54 | + S, | ||
| 55 | + cg_constant_list(INIT, " "), | ||
| 56 | + " };\n". | ||
| 57 | + | ||
| 58 | +cg_var(init, var(_N,array(_T,_LB,_UB),lit(INIT,array(_)),_), _ST) --> | ||
| 59 | + { nonvar(INIT), INIT=[_|_] }, !, | ||
| 60 | + []. | ||
| 61 | + | ||
| 62 | + | ||
| 63 | +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
| 64 | + | ||
| 65 | +cg_constant_list([], _) --> []. | ||
| 66 | +cg_constant_list([C|Cs], PFX) --> | ||
| 67 | + PFX, cg_constant(C), | ||
| 68 | + cg_constant_list(Cs, ", "). | ||
| 69 | + | ||
| 70 | +cg_constant(lit(N,int)) --> { format_to_codes(S, "~w", [N]) }, S. | ||
| 71 | + | ||
| 46 | % -- constraints -------------------------------------------------------------- | 72 | % -- constraints -------------------------------------------------------------- |
| 47 | 73 | ||
| 48 | cg_constrs([C|Cs], ST) --> cg_constr(C, ST), cg_constrs(Cs, ST). | 74 | cg_constrs([C|Cs], ST) --> cg_constr(C, ST), cg_constrs(Cs, ST). |