1dot_expr(Data,bool,startswith(Str1,Str2)) -->
    2	startswith_(Data,[
    3		parentheses_expr(Data,string,Str1),
    4		parentheses_expr(Data,string,Str2)
    5	]).
    6
    7
    8
    9dot_expr(Data,bool,endswith(Str1,Str2)) -->
   10	endswith_(Data,[
   11		parentheses_expr(Data,string,Str1),
   12		expr(Data,string,Str2)
   13	]).
   14
   15dot_expr(Data,string,join_(Array,Separator)) -->
   16	join_(Data,[
   17		parentheses_expr(Data,[array,string],Array),
   18		parentheses_expr(Data,string,Separator)
   19	]).
   20
   21dot_expr(Data,int,random_int_in_range(Start,End)) -->
   22	random_int_in_range(Data,[
   23		expr(Data,int,Start),
   24		expr(Data,int,End)
   25	]).
   26
   27dot_expr(Data,double,sqrt(Exp1)) -->
   28	sqrt(Data,[expr(Data,double,Exp1)]).
   29
   30
   31dot_expr(Data,Type,list_comprehension(Result,Var,Condition,Array)) -->
   32	list_comprehension_(Data,[
   33		var_name_(Data,Type,Var),
   34		expr(Data,[array,Type],Array),
   35		expr(Data,Type,Result),
   36		expr(Data,bool,Condition)
   37	]).
   38
   39dot_expr(Data,[array,Type],reverse_list(List,Type)) -->
   40	reverse_list_(Data,[
   41		parentheses_expr(Data,[array,Type],List)
   42	]),!.
   43 
   44dot_expr(Data,string,reverse_string(Str)) -->
   45	reverse_string_(Data,[
   46		expr(Data,string,Str)
   47	]),!.
   48 
   49%https://en.wikipedia.org/wiki/Comparison_of_programming_languages_(string_functions)#trim
   50dot_expr(Data,string,trim(Str)) -->
   51	trim_(Data,[
   52		parentheses_expr(Data,string,Str)
   53	]),!.
   54
   55%https://en.wikipedia.org/wiki/Comparison_of_programming_languages_(string_functions)#trim
   56dot_expr(Data,string,lstrip(Str)) -->
   57	lstrip_(Data,[
   58		parentheses_expr(Data,string,Str)
   59	]),!.
   60
   61%https://en.wikipedia.org/wiki/Comparison_of_programming_languages_(string_functions)#trim
   62dot_expr(Data,string,rstrip(Str)) -->
   63	rstrip_(Data,[
   64		parentheses_expr(Data,string,Str)
   65	]),!.
   66
   67%all characters to lowercase
   68dot_expr(Data,string,lowercase(Str)) -->
   69	lowercase_(Data,[
   70		parentheses_expr(Data,string,Str)
   71	]),!.
   72
   73%all characters to uppercase
   74dot_expr(Data,string,uppercase(Str)) -->
   75	uppercase_(Data,[
   76		parentheses_expr(Data,string,Str)
   77	]),!.
   78
   79dot_expr(Data,int,strlen(A)) -->
   80	strlen_(Data,[parentheses_expr(Data,string,A)]).
   81
   82dot_expr(Data,int,array_length(A,Type)) -->
   83	array_length(Data,[
   84		parentheses_expr(Data,[array,Type],A)
   85	]).
   86
   87dot_expr(Data,Type,parentheses_expr(A)) --> 
   88	parentheses_expr(Data,Type,A)