Commit f7de4bd3c70b39bf410402e8e6feac74805865f4
1 parent
e2445a00
Exists in
master
var decl fix
Showing
2 changed files
with
5 additions
and
14 deletions
Show diff stats
fzn-parser/examples/a.ast
@@ -17,7 +17,7 @@ _T > [_:id('output_var')|_T]. | @@ -17,7 +17,7 @@ _T > [_:id('output_var')|_T]. | ||
17 | _T > [[]|_T]. | 17 | _T > [[]|_T]. |
18 | [H,T|_T] > [[H|T]|_T]. | 18 | [H,T|_T] > [[H|T]|_T]. |
19 | _T > [[]|_T]. | 19 | _T > [[]|_T]. |
20 | -[VAL,AN,T|_T] > [var(T, VAL, AN)|_T]. | 20 | +[VAL,AN,ID,T|_T] > [var(ID, T, VAL, AN)|_T]. |
21 | [H,T|_T] > [[H|T]|_T]. | 21 | [H,T|_T] > [[H|T]|_T]. |
22 | _T > [int(1,3)|_T]. | 22 | _T > [int(1,3)|_T]. |
23 | _T > ['nt'|_T]. | 23 | _T > ['nt'|_T]. |
@@ -25,7 +25,7 @@ _T > [_:id('output_var')|_T]. | @@ -25,7 +25,7 @@ _T > [_:id('output_var')|_T]. | ||
25 | _T > [[]|_T]. | 25 | _T > [[]|_T]. |
26 | [H,T|_T] > [[H|T]|_T]. | 26 | [H,T|_T] > [[H|T]|_T]. |
27 | _T > [[]|_T]. | 27 | _T > [[]|_T]. |
28 | -[VAL,AN,T|_T] > [var(T, VAL, AN)|_T]. | 28 | +[VAL,AN,ID,T|_T] > [var(ID, T, VAL, AN)|_T]. |
29 | [H,T|_T] > [[H|T]|_T]. | 29 | [H,T|_T] > [[H|T]|_T]. |
30 | [X|_T] > [vars(X)|_T]. | 30 | [X|_T] > [vars(X)|_T]. |
31 | _T > [[]|_T]. | 31 | _T > [[]|_T]. |
fzn-parser/flatzinc.y
@@ -51,18 +51,9 @@ | @@ -51,18 +51,9 @@ | ||
51 | // pop an item and a list, push new list (CONS) | 51 | // pop an item and a list, push new list (CONS) |
52 | #define CONS() AST ("H,T", ("[H|T]")) | 52 | #define CONS() AST ("H,T", ("[H|T]")) |
53 | 53 | ||
54 | - // pop one thing, push it as a 1-element list | ||
55 | -#define TAIL() AST ("T", ("[T]")) | ||
56 | - | ||
57 | // push the empty list | 54 | // push the empty list |
58 | #define NIL() PUSH (("[]")) | 55 | #define NIL() PUSH (("[]")) |
59 | 56 | ||
60 | - // pop one thing, push an open-ended list headed with that thing | ||
61 | -#define TAIL_OPEN() AST ("T", ("[T|_]")) | ||
62 | - | ||
63 | - // push an unbound variable | ||
64 | -#define NIL_OPEN() PUSH (("_")) | ||
65 | - | ||
66 | #define BINARY(op) AST ("B,A", ("op(A,B)")) | 57 | #define BINARY(op) AST ("B,A", ("op(A,B)")) |
67 | #define UNARY(op) AST ("X", ("op(X)")) | 58 | #define UNARY(op) AST ("X", ("op(X)")) |
68 | 59 | ||
@@ -117,11 +108,11 @@ model_end : solve_item ';' | @@ -117,11 +108,11 @@ model_end : solve_item ';' | ||
117 | pred_decl_item: | 108 | pred_decl_item: |
118 | PREDICATE IDENT '(' pred_decl_args ')' | 109 | PREDICATE IDENT '(' pred_decl_args ')' |
119 | 110 | ||
120 | -var_decl_item: | 111 | +var_decl_item: /* -> [ var(ID,TYPE,INIT,ANNOT) | _ ] */ |
121 | VAR non_array_ti_expr_tail ':' ident_anns var_decl_item2 | 112 | VAR non_array_ti_expr_tail ':' ident_anns var_decl_item2 |
122 | - { AST ("VAL,AN,T", ("var(T, VAL, AN)")); } | 113 | + { AST ("VAL,AN,ID,T", ("var(ID, T, VAL, AN)")); } |
123 | | non_array_ti_expr_tail ':' ident_anns '=' expr | 114 | | non_array_ti_expr_tail ':' ident_anns '=' expr |
124 | - { AST ("VAL,AN,T", ("var(T, VAL, AN)")); } | 115 | + { AST ("VAL,AN,ID,T", ("var(ID, T, VAL, AN)")); } |
125 | | ARRAY '[' INT_LITERAL DOTDOT INT_LITERAL ']' OF array_decl_tail | 116 | | ARRAY '[' INT_LITERAL DOTDOT INT_LITERAL ']' OF array_decl_tail |
126 | { AST ("VAL,AN,T", ("var(array(T,%d,%d), VAL, AN)", $3, $5)); } | 117 | { AST ("VAL,AN,T", ("var(array(T,%d,%d), VAL, AN)", $3, $5)); } |
127 | 118 |