Commit e2445a00abc18aa64a2ff14ec93dde4670fe5f2b
1 parent
b204495a
Exists in
master
progress on AST
Showing
3 changed files
with
43 additions
and
17 deletions
Show diff stats
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 | ... | ... |