Commit e2445a00abc18aa64a2ff14ec93dde4670fe5f2b

Authored by Salvador Abreu
1 parent b204495a
Exists in master

progress on AST

fzn-parser/examples/a.ast
... ... @@ -3,7 +3,7 @@ _T > [[]|_T].
3 3 [X|_T] > [preds(X)|_T].
4 4 _T > [[]|_T].
5 5 _T > [int|_T].
6   -_T > [id('X_INTRODUCED_0')|_T].
  6 +_T > ['X_INTRODUCED_0'|_T].
7 7 _T > [[]|_T].
8 8 _T > [int:lit(1)|_T].
9 9 _T > [int:lit(-1)|_T].
... ... @@ -12,7 +12,7 @@ _T > [int:lit(-1)|_T].
12 12 [VAL,AN,T|_T] > [var(array(T,1,2), VAL, AN)|_T].
13 13 [H,T|_T] > [[H|T]|_T].
14 14 _T > [int(1,3)|_T].
15   -_T > [id('wa')|_T].
  15 +_T > ['wa'|_T].
16 16 _T > [_:id('output_var')|_T].
17 17 _T > [[]|_T].
18 18 [H,T|_T] > [[H|T]|_T].
... ... @@ -20,7 +20,7 @@ _T > [[]|_T].
20 20 [VAL,AN,T|_T] > [var(T, VAL, AN)|_T].
21 21 [H,T|_T] > [[H|T]|_T].
22 22 _T > [int(1,3)|_T].
23   -_T > [id('nt')|_T].
  23 +_T > ['nt'|_T].
24 24 _T > [_:id('output_var')|_T].
25 25 _T > [[]|_T].
26 26 [H,T|_T] > [[H|T]|_T].
... ... @@ -37,8 +37,9 @@ _T > [_:id('nt')|_T].
37 37 _T > [int:lit(0)|_T].
38 38 [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
39 39 [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  40 +_T > ['int_lin_ne'|_T].
40 41 _T > [[]|_T].
41   -[A, C|_T] > [constraint(C, A)|_T].
  42 +[A,C,E|_T] > [constraint(C,E,A)|_T].
42 43 [H,T|_T] > [[H|T]|_T].
43 44 [X|_T] > [constrs(X)|_T].
44 45 _T > [[]|_T].
... ...
fzn-parser/examples/aust.ast
... ... @@ -3,46 +3,69 @@ _T > [[]|_T].
3 3 [X|_T] > [preds(X)|_T].
4 4 _T > [[]|_T].
5 5 _T > [int|_T].
  6 +_T > [id('X_INTRODUCED_0')|_T].
6 7 _T > [[]|_T].
7 8 _T > [int:lit(1)|_T].
8 9 _T > [int:lit(-1)|_T].
9 10 [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
10 11 [Es|_T] > [array(_):alit(Es)|_T].
  12 +[VAL,AN,T|_T] > [var(array(T,1,2), VAL, AN)|_T].
11 13 [H,T|_T] > [[H|T]|_T].
12 14 _T > [int(1,3)|_T].
  15 +_T > [id('wa')|_T].
13 16 _T > [_:id('output_var')|_T].
14 17 _T > [[]|_T].
15 18 [H,T|_T] > [[H|T]|_T].
  19 +_T > [[]|_T].
  20 +[VAL,AN,T|_T] > [var(T, VAL, AN)|_T].
16 21 [H,T|_T] > [[H|T]|_T].
17 22 _T > [int(1,3)|_T].
  23 +_T > [id('nt')|_T].
18 24 _T > [_:id('output_var')|_T].
19 25 _T > [[]|_T].
20 26 [H,T|_T] > [[H|T]|_T].
  27 +_T > [[]|_T].
  28 +[VAL,AN,T|_T] > [var(T, VAL, AN)|_T].
21 29 [H,T|_T] > [[H|T]|_T].
22 30 _T > [int(1,3)|_T].
  31 +_T > [id('sa')|_T].
23 32 _T > [_:id('output_var')|_T].
24 33 _T > [[]|_T].
25 34 [H,T|_T] > [[H|T]|_T].
  35 +_T > [[]|_T].
  36 +[VAL,AN,T|_T] > [var(T, VAL, AN)|_T].
26 37 [H,T|_T] > [[H|T]|_T].
27 38 _T > [int(1,3)|_T].
  39 +_T > [id('q')|_T].
28 40 _T > [_:id('output_var')|_T].
29 41 _T > [[]|_T].
30 42 [H,T|_T] > [[H|T]|_T].
  43 +_T > [[]|_T].
  44 +[VAL,AN,T|_T] > [var(T, VAL, AN)|_T].
31 45 [H,T|_T] > [[H|T]|_T].
32 46 _T > [int(1,3)|_T].
  47 +_T > [id('nsw')|_T].
33 48 _T > [_:id('output_var')|_T].
34 49 _T > [[]|_T].
35 50 [H,T|_T] > [[H|T]|_T].
  51 +_T > [[]|_T].
  52 +[VAL,AN,T|_T] > [var(T, VAL, AN)|_T].
36 53 [H,T|_T] > [[H|T]|_T].
37 54 _T > [int(1,3)|_T].
  55 +_T > [id('v')|_T].
38 56 _T > [_:id('output_var')|_T].
39 57 _T > [[]|_T].
40 58 [H,T|_T] > [[H|T]|_T].
  59 +_T > [[]|_T].
  60 +[VAL,AN,T|_T] > [var(T, VAL, AN)|_T].
41 61 [H,T|_T] > [[H|T]|_T].
42 62 _T > [int(1,3)|_T].
  63 +_T > [id('t')|_T].
43 64 _T > [_:id('output_var')|_T].
44 65 _T > [[]|_T].
45 66 [H,T|_T] > [[H|T]|_T].
  67 +_T > [[]|_T].
  68 +[VAL,AN,T|_T] > [var(T, VAL, AN)|_T].
46 69 [H,T|_T] > [[H|T]|_T].
47 70 [X|_T] > [vars(X)|_T].
48 71 _T > [[]|_T].
... ...
fzn-parser/flatzinc.y
... ... @@ -119,32 +119,34 @@ pred_decl_item:
119 119  
120 120 var_decl_item:
121 121 VAR non_array_ti_expr_tail ':' ident_anns var_decl_item2
122   - { AST ("ID,T")
  122 + { AST ("VAL,AN,T", ("var(T, VAL, AN)")); }
123 123 | non_array_ti_expr_tail ':' ident_anns '=' expr
  124 + { AST ("VAL,AN,T", ("var(T, VAL, AN)")); }
124 125 | ARRAY '[' INT_LITERAL DOTDOT INT_LITERAL ']' OF array_decl_tail
  126 + { AST ("VAL,AN,T", ("var(array(T,%d,%d), VAL, AN)", $3, $5)); }
125 127  
126 128 var_decl_item2:
127   - '=' expr
128   - | /*empty*/
  129 + '=' expr { }
  130 + | /*empty*/ { NIL (); }
129 131  
130 132 array_decl_tail:
131 133 non_array_ti_expr_tail ':' ident_anns '=' array_literal
132 134 | VAR non_array_ti_expr_tail ':' ident_anns array_decl_tail2
133 135  
134   -array_decl_tail2:
135   - '=' array_literal
136   - | /*empty*/
  136 +array_decl_tail2: /* -> [ DECLS | _ ] */
  137 + '=' array_literal { }
  138 + | /*empty*/ { NIL (); }
137 139  
138   -ident_anns:
139   - IDENT { PUSH (("id('%s')", $1)); } annotations
140   - | UNDERSCORE_IDENT { PUSH (("id('%s')", $1)); } annotations
  140 +ident_anns: /* -> [ ANNOTATIONS, ID | _ ] */
  141 + IDENT { PUSH (("'%s'", $1)); } annotations
  142 + | UNDERSCORE_IDENT { PUSH (("'%s'", $1)); } annotations
141 143  
142   -constraint_item:
  144 +constraint_item: /* -> [ constraint(...) | ] */
143 145 CONSTRAINT constraint_elem annotations
144   - { AST ("A, C", ("constraint(C, A)")); }
  146 + { AST ("A,C,E", ("constraint(C,E,A)")); }
145 147  
146   -constraint_elem:
147   - IDENT '(' exprs ')'
  148 +constraint_elem: /* -> [ CONSTR_ID, EXPRLIST | _ ] */
  149 + IDENT '(' exprs ')' { PUSH (("'%s'", $1)); }
148 150  
149 151 solve_item:
150 152 SOLVE annotations solve_kind
... ...