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 |