diff --git a/fzn-parser/examples/aust.ast.old b/fzn-parser/examples/aust.ast.old index 790d689..eb5aeb1 100644 --- a/fzn-parser/examples/aust.ast.old +++ b/fzn-parser/examples/aust.ast.old @@ -7,7 +7,7 @@ _T > [[]|_T]. _T > [int:lit(1)|_T]. _T > [int:lit(-1)|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. -[Es|_T] > [array(_,[_]):alit(Es)|_T]. +[Es|_T] > [array(_):alit(Es)|_T]. [H,T|_T] > [[H|T]|_T]. _T > [int(1,3)|_T]. _T > [_:id('output_var')|_T]. @@ -50,7 +50,7 @@ _T > [_:id('X_INTRODUCED_0')|_T]. _T > [_:id('wa')|_T]. _T > [_:id('nt')|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. -[Es|_T] > [array(_,[_]):alit(Es)|_T]. +[Es|_T] > [array(_):alit(Es)|_T]. _T > [int:lit(0)|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. @@ -61,7 +61,7 @@ _T > [_:id('X_INTRODUCED_0')|_T]. _T > [_:id('wa')|_T]. _T > [_:id('sa')|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. -[Es|_T] > [array(_,[_]):alit(Es)|_T]. +[Es|_T] > [array(_):alit(Es)|_T]. _T > [int:lit(0)|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. @@ -72,7 +72,7 @@ _T > [_:id('X_INTRODUCED_0')|_T]. _T > [_:id('nt')|_T]. _T > [_:id('sa')|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. -[Es|_T] > [array(_,[_]):alit(Es)|_T]. +[Es|_T] > [array(_):alit(Es)|_T]. _T > [int:lit(0)|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. @@ -83,7 +83,7 @@ _T > [_:id('X_INTRODUCED_0')|_T]. _T > [_:id('nt')|_T]. _T > [_:id('q')|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. -[Es|_T] > [array(_,[_]):alit(Es)|_T]. +[Es|_T] > [array(_):alit(Es)|_T]. _T > [int:lit(0)|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. @@ -94,7 +94,7 @@ _T > [_:id('X_INTRODUCED_0')|_T]. _T > [_:id('sa')|_T]. _T > [_:id('q')|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. -[Es|_T] > [array(_,[_]):alit(Es)|_T]. +[Es|_T] > [array(_):alit(Es)|_T]. _T > [int:lit(0)|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. @@ -105,7 +105,7 @@ _T > [_:id('X_INTRODUCED_0')|_T]. _T > [_:id('sa')|_T]. _T > [_:id('nsw')|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. -[Es|_T] > [array(_,[_]):alit(Es)|_T]. +[Es|_T] > [array(_):alit(Es)|_T]. _T > [int:lit(0)|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. @@ -116,7 +116,7 @@ _T > [_:id('X_INTRODUCED_0')|_T]. _T > [_:id('sa')|_T]. _T > [_:id('v')|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. -[Es|_T] > [array(_,[_]):alit(Es)|_T]. +[Es|_T] > [array(_):alit(Es)|_T]. _T > [int:lit(0)|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. @@ -127,7 +127,7 @@ _T > [_:id('X_INTRODUCED_0')|_T]. _T > [_:id('q')|_T]. _T > [_:id('nsw')|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. -[Es|_T] > [array(_,[_]):alit(Es)|_T]. +[Es|_T] > [array(_):alit(Es)|_T]. _T > [int:lit(0)|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. @@ -138,7 +138,7 @@ _T > [_:id('X_INTRODUCED_0')|_T]. _T > [_:id('nsw')|_T]. _T > [_:id('v')|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. -[Es|_T] > [array(_,[_]):alit(Es)|_T]. +[Es|_T] > [array(_):alit(Es)|_T]. _T > [int:lit(0)|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. [T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T]. diff --git a/fzn-parser/flatzinc.y b/fzn-parser/flatzinc.y index 14b6349..479ce9d 100644 --- a/fzn-parser/flatzinc.y +++ b/fzn-parser/flatzinc.y @@ -119,6 +119,7 @@ pred_decl_item: var_decl_item: VAR non_array_ti_expr_tail ':' ident_anns var_decl_item2 + { AST ("ID,T") | non_array_ti_expr_tail ':' ident_anns '=' expr | ARRAY '[' INT_LITERAL DOTDOT INT_LITERAL ']' OF array_decl_tail @@ -135,8 +136,8 @@ array_decl_tail2: | /*empty*/ ident_anns: - IDENT annotations - | UNDERSCORE_IDENT annotations + IDENT { PUSH (("id('%s')", $1)); } annotations + | UNDERSCORE_IDENT { PUSH (("id('%s')", $1)); } annotations constraint_item: CONSTRAINT constraint_elem annotations diff --git a/fzn-parser/fznslurp.pl b/fzn-parser/fznslurp.pl index 24a7e5d..9c909b6 100644 --- a/fzn-parser/fznslurp.pl +++ b/fzn-parser/fznslurp.pl @@ -4,6 +4,10 @@ load_ast(AST) :- load_ast(_>[], [], AST). load_ast(end_of_file, AST, AST). load_ast(IN > INT, IN, OUT) :- read(OP), !, - write(OP), nl, + ( g_read(ast_debug, true) -> + write(OP), nl + ; true ), load_ast(OP, INT, OUT). +slurp(FILE, AST) :- see(FILE), load_ast(AST), !, seen. +slurp(_, end_of_file) :- seen. -- libgit2 0.21.2