From 420a353a4e98f1ee1fda0064cbd2d4435f5689d9 Mon Sep 17 00:00:00 2001 From: Salvador Abreu Date: Thu, 18 Jun 2015 15:26:27 +0900 Subject: [PATCH] continue AST build --- fzn-parser/flatzinc.y | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/fzn-parser/flatzinc.y b/fzn-parser/flatzinc.y index df5daca..14b6349 100644 --- a/fzn-parser/flatzinc.y +++ b/fzn-parser/flatzinc.y @@ -204,7 +204,7 @@ float_ti_expr_tail: | FLOAT_LITERAL DOTDOT FLOAT_LITERAL { PUSH (("float(%g,%g)", $1, $3)); } set_ti_expr_tail: - SET OF int_ti_expr_tail + SET OF int_ti_expr_tail { AST ("T", ("set(T)")); } //--------------------------------------------------------------------------- // Expressions @@ -222,8 +222,8 @@ expr: | set_literal | array_literal | array_access_expr - | IDENT { PUSH (("_:id(\"%s\")", $1)); } - | UNDERSCORE_IDENT { PUSH (("_:uid(\"%s\")", $1)); } + | IDENT { PUSH (("_:id('%s')", $1)); } + | UNDERSCORE_IDENT { PUSH (("_:uid('%s')", $1)); } | IDENT '(' exprs ')' /* An annotation value with > 0 arguments. */ bool_literal: @@ -242,11 +242,15 @@ set_literal: POST(); } array_literal: - '[' exprs ']' { AST ("Es", ("alit(Es)")); } - | '[' ']' { PUSH (("alit([])")); } + '[' exprs ']' { AST ("Es", ("array(_):alit(Es)")); } + | '[' ']' { PUSH (("array(_):alit([])")); } array_access_expr: IDENT '[' INT_LITERAL ']' + { AST ("int:EI,array(T):ID", + ("T:aref(array(T):ID,int:EI)")); } | UNDERSCORE_IDENT '[' INT_LITERAL ']' + { AST ("int:EI,array(T):ID", + ("T:aref(array(T):ID,int:EI)")); } //--------------------------------------------------------------------------- // Annotations -- libgit2 0.21.2