From 91bd90db0a0796929c8cd1879d689264154af232 Mon Sep 17 00:00:00 2001 From: Pekka Enberg Date: Tue, 24 Feb 2015 14:56:13 +0200 Subject: [PATCH] cql3/Cql.g: Convert mapLiteral rule to C++ Signed-off-by: Pekka Enberg --- cql3/Cql.g | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/cql3/Cql.g b/cql3/Cql.g index a567471afc..b1315d0550 100644 --- a/cql3/Cql.g +++ b/cql3/Cql.g @@ -40,6 +40,7 @@ options { #include "cql3/single_column_relation.hh" #include "cql3/cql3_type.hh" #include "cql3/cf_name.hh" +#include "cql3/maps.hh" #include "core/sstring.hh" #include "CqlLexer.hpp" @@ -1051,13 +1052,14 @@ constant returns [shared_ptr constant] | { sign=""; } ('-' {sign = "-"; } )? t=(K_NAN | K_INFINITY) { $constant = cql3::constants::literal::floating_point(sstring{sign + $t.text}); } ; -#if 0 -mapLiteral returns [Maps.Literal map] - : '{' { List> m = new ArrayList>(); } - ( k1=term ':' v1=term { m.add(Pair.create(k1, v1)); } ( ',' kn=term ':' vn=term { m.add(Pair.create(kn, vn)); } )* )? - '}' { $map = new Maps.Literal(m); } +mapLiteral returns [shared_ptr map] + @init{std::vector, ::shared_ptr>> m;} + : '{' { } + ( k1=term ':' v1=term { m.push_back(std::pair, shared_ptr>{k1, v1}); } ( ',' kn=term ':' vn=term { m.push_back(std::pair, shared_ptr>{kn, vn}); } )* )? + '}' { $map = ::make_shared(m); } ; +#if 0 setOrMapLiteral[Term.Raw t] returns [Term.Raw value] : ':' v=term { List> m = new ArrayList>(); m.add(Pair.create(t, v)); } ( ',' kn=term ':' vn=term { m.add(Pair.create(kn, vn)); } )*