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 | ... | ... |