1parentheses_expr(_,char,char_literal(A)) -->
    2	char_literal(A).
    3
    4parentheses_expr(_,string,string_literal(A)) -->
    5	string_literal(A).
    6
    7
    8parentheses_expr(Data,Type1,anonymous_function(Type1,Params1,Body1)) -->
    9        anonymous_function_(Data,[
   10			type(Data,Type1),
   11			parameters(Data,Params1),
   12			statements(Data,Type1,Body1)
   13        ]).
   14
   15parentheses_expr(Data,bool,"true") -->
   16	true_(Data).
   17parentheses_expr(Data,bool,"false") -->
   18	false_(Data).
   19
   20parentheses_expr(Data,[array,Type],initializer_list(A)) -->
   21	initializer_list_(Data,[
   22		initializer_list_(Data,Type,A),
   23		type(Data,Type)
   24	]).
   25
   26parentheses_expr(Data,[dict,Type1],dict(A)) -->
   27	dict_(Data,[
   28		dict_(Data,Type1,A),
   29		type(Data,Type1)
   30	]).
   31
   32%should be inclusive range
   33parentheses_expr(Data,[array,int],range(A,B)) -->
   34	range_(Data,[
   35		parentheses_expr(Data,int,A),
   36		expr(Data,int,B)
   37	]).
   38
   39parentheses_expr(Data,Type,var_name(A)) -->
   40	var_name_(Data,Type,A).
   41
   42parentheses_expr(_,int,an_int(A)) -->
   43	an_int(A).
   44parentheses_expr(_,double,a_double(A)) -->
   45	a_double(A).
   46
   47parentheses_expr(Data,Type,parentheses(A)) -->
   48	"(",ws,expr(Data,Type,A),ws,")".
   49
   50parentheses_expr(Data,Type, function_call(Name,Params1,Params2)) -->
   51    function_call_(Data,[
   52		function_name(Data,Type,Name,Params2),
   53		function_call_parameters(Data,Params1,Params2)
   54	]),
   55	{reserved_words(Name)}