<commit_before>{
   //
   //This macro produces the flowchart of TFormula::Analyze
   //Author: <NAME>

   gROOT->Reset();
   c1 = new TCanvas("c1","Analyze.mac",620,790);
   c1->Range(-1,0,19,30);
   TPaveLabel pl1(0,27,3.5,29,"Analyze");
   pl1.SetFillColor(42);
   pl1.Draw();
   TPaveText pt1(0,22.8,4,25.2);
   TText *t1=pt1.AddText("Parenthesis matching");
   TText *t2=pt1.AddText("Remove unnecessary");
   TText *t2a=pt1.AddText("parenthesis");
   pt1.Draw();
   TPaveText pt2(6,23,10,25);
   TText *t3=pt2.AddText("break of");
   TText *t4=pt2.AddText("Analyze");
   pt2.Draw();
   TPaveText pt3(0,19,4,21);
   t4=pt3.AddText("look for simple");
   TText *t5=pt3.AddText("operators");
   pt3.Draw();
   TPaveText pt4(0,15,4,17);
   TText *t6=pt4.AddText("look for an already");
   TText *t7=pt4.AddText("defined expression");
   pt4.Draw();
   TPaveText pt5(0,11,4,13);
   TText *t8=pt5.AddText("look for usual");
   TText *t9=pt5.AddText("functions :cos sin ..");
   pt5.Draw();
   TPaveText pt6(0,7,4,9);
   TText *t10=pt6.AddText("look for a");
   TText *t11=pt6.AddText("numeric value");
   pt6.Draw();
   TPaveText pt7(6,18.5,10,21.5);
   TText *t12=pt7.AddText("Analyze left and");
   TText *t13=pt7.AddText("right part of");
   TText *t14=pt7.AddText("the expression");
   pt7.Draw();
   TPaveText pt8(6,15,10,17);
   TText *t15=pt8.AddText("Replace expression");
   pt8.Draw();
   TPaveText pt9(6,11,10,13);
   TText *t16=pt9.AddText("Analyze");
   pt9.SetFillColor(42);
   pt9.Draw();
   TPaveText pt10(6,7,10,9);
   TText *t17=pt10.AddText("Error");
   TText *t18=pt10.AddText("Break of Analyze");
   pt10.Draw();
   TPaveText pt11(14,22,17,24);
   pt11.SetFillColor(42);
   TText *t19=pt11.AddText("Analyze");
   TText *t19a=pt11.AddText("Left");
   pt11.Draw();
   TPaveText pt12(14,19,17,21);
   pt12.SetFillColor(42);
   TText *t20=pt12.AddText("Analyze");
   TText *t20a=pt12.AddText("Right");
   pt12.Draw();
   TPaveText pt13(14,15,18,18);
   TText *t21=pt13.AddText("StackNumber++");
   TText *t22=pt13.AddText("operator[StackNumber]");
   TText *t23=pt13.AddText("= operator found");
   pt13.Draw();
   TPaveText pt14(12,10.8,17,13.2);
   TText *t24=pt14.AddText("StackNumber++");
   TText *t25=pt14.AddText("operator[StackNumber]");
   TText *t26=pt14.AddText("= function found");
   pt14.Draw();
   TPaveText pt15(6,7,10,9);
   TText *t27=pt15.AddText("Error");
   TText *t28=pt15.AddText("break of Analyze");
   pt15.Draw();
   TPaveText pt16(0,2,7,5);
   TText *t29=pt16.AddText("StackNumber++");
   TText *t30=pt16.AddText("operator[StackNumber] = 0");
   TText *t31=pt16.AddText("value[StackNumber] = value found");
   pt16.Draw();
   TArrow ar(2,27,2,25.4,0.012,"|>");
   ar.SetFillColor(1);
   ar.Draw();
   ar.DrawArrow(2,22.8,2,21.2,0.012,"|>");
   ar.DrawArrow(2,19,2,17.2,0.012,"|>");
   ar.DrawArrow(2,15,2,13.2,0.012,"|>");
   ar.DrawArrow(2,11,2, 9.2,0.012,"|>");
   ar.DrawArrow(2, 7,2, 5.2,0.012,"|>");
   ar.DrawArrow(4,24,6,24,0.012,"|>");
   ar.DrawArrow(4,20,6,20,0.012,"|>");
   ar.DrawArrow(4,16,6,16,0.012,"|>");
   ar.DrawArrow(4,12,6,12,0.012,"|>");
   ar.DrawArrow(4, 8,6, 8,0.012,"|>");
   ar.DrawArrow(10,20,14,20,0.012,"|>");
   ar.DrawArrow(12,23,14,23,0.012,"|>");
   ar.DrawArrow(12,16.5,14,16.5,0.012,"|>");
   ar.DrawArrow(10,12,12,12,0.012,"|>");
   TText ta(2.2,22.2,"err = 0");
   ta.SetTextFont(71);
   ta.SetTextSize(0.015);
   ta.SetTextColor(4);
   ta.SetTextAlign(12);
   ta.Draw();
   ta.DrawText(2.2,18.2,"not found");
   ta.DrawText(2.2,6.2,"found");
   TText tb(4.2,24.1,"err != 0");
   tb.SetTextFont(71);
   tb.SetTextSize(0.015);
   tb.SetTextColor(4);
   tb.SetTextAlign(11);
   tb.Draw();
   tb.DrawText(4.2,20.1,"found");
   tb.DrawText(4.2,16.1,"found");
   tb.DrawText(4.2,12.1,"found");
   tb.DrawText(4.2, 8.1,"not found");
   TLine l1(12,16.5,12,23);
   l1.Draw();
}<commit_msg>make sure this macro can be executed several time.s<commit_after>void analyze() {
   //
   //This macro produces the flowchart of TFormula::Analyze
   //Author: <NAME>

   TCanvas *c1 = new TCanvas("c1","Analyze.mac",620,790);
   c1->Range(-1,0,19,30);
   TPaveLabel *pl1 = new TPaveLabel(0,27,3.5,29,"Analyze");
   pl1->SetFillColor(42);
   pl1->Draw();
   TPaveText *pt1 = new TPaveText(0,22.8,4,25.2);
   TText *t1  = pt1->AddText("Parenthesis matching");
   TText *t2  = pt1->AddText("Remove unnecessary");
   TText *t2a = pt1->AddText("parenthesis");
   pt1->Draw();
   TPaveText *pt2 = new TPaveText(6,23,10,25);
   TText *t3 = pt2->AddText("break of");
   TText *t4 = pt2->AddText("Analyze");
   pt2->Draw();
   TPaveText *pt3 = new TPaveText(0,19,4,21);
   t4=pt3->AddText("look for simple");
   TText *t5 = pt3->AddText("operators");
   pt3->Draw();
   TPaveText *pt4 = new TPaveText(0,15,4,17);
   TText *t6 = pt4->AddText("look for an already");
   TText *t7 = pt4->AddText("defined expression");
   pt4->Draw();
   TPaveText *pt5 = new TPaveText(0,11,4,13);
   TText *t8 = pt5->AddText("look for usual");
   TText *t9 = pt5->AddText("functions :cos sin ..");
   pt5->Draw();
   TPaveText *pt6 = new TPaveText(0,7,4,9);
   TText *t10 = pt6->AddText("look for a");
   TText *t11 = pt6->AddText("numeric value");
   pt6->Draw();
   TPaveText *pt7 = new TPaveText(6,18.5,10,21.5);
   TText *t12 = pt7->AddText("Analyze left and");
   TText *t13 = pt7->AddText("right part of");
   TText *t14 = pt7->AddText("the expression");
   pt7->Draw();
   TPaveText *pt8 = new TPaveText(6,15,10,17);
   TText *t15 = pt8->AddText("Replace expression");
   pt8->Draw();
   TPaveText *pt9 = new TPaveText(6,11,10,13);
   TText *t16 = pt9->AddText("Analyze");
   pt9->SetFillColor(42);
   pt9->Draw();
   TPaveText *pt10 = new TPaveText(6,7,10,9);
   TText *t17 = pt10->AddText("Error");
   TText *t18 = pt10->AddText("Break of Analyze");
   pt10->Draw();
   TPaveText *pt11 = new TPaveText(14,22,17,24);
   pt11->SetFillColor(42);
   TText *t19  = pt11->AddText("Analyze");
   TText *t19a = pt11->AddText("Left");
   pt11->Draw();
   TPaveText *pt12 = new TPaveText(14,19,17,21);
   pt12->SetFillColor(42);
   TText *t20  = pt12->AddText("Analyze");
   TText *t20a = pt12->AddText("Right");
   pt12->Draw();
   TPaveText *pt13 = new TPaveText(14,15,18,18);
   TText *t21 = pt13->AddText("StackNumber++");
   TText *t22 = pt13->AddText("operator[StackNumber]");
   TText *t23 = pt13->AddText("= operator found");
   pt13->Draw();
   TPaveText *pt14 = new TPaveText(12,10.8,17,13.2);
   TText *t24 = pt14->AddText("StackNumber++");
   TText *t25 = pt14->AddText("operator[StackNumber]");
   TText *t26 = pt14->AddText("= function found");
   pt14->Draw();
   TPaveText *pt15 = new TPaveText(6,7,10,9);
   TText *t27 = pt15->AddText("Error");
   TText *t28 = pt15->AddText("break of Analyze");
   pt15->Draw();
   TPaveText *pt16 = new TPaveText(0,2,7,5);
   TText *t29 = pt16->AddText("StackNumber++");
   TText *t30 = pt16->AddText("operator[StackNumber] = 0");
   TText *t31 = pt16->AddText("value[StackNumber] = value found");
   pt16->Draw();
   TArrow *ar = new TArrow(2,27,2,25.4,0.012,"|>");
   ar->SetFillColor(1);
   ar->Draw();
   ar->DrawArrow(2,22.8,2,21.2,0.012,"|>");
   ar->DrawArrow(2,19,2,17.2,0.012,"|>");
   ar->DrawArrow(2,15,2,13.2,0.012,"|>");
   ar->DrawArrow(2,11,2, 9.2,0.012,"|>");
   ar->DrawArrow(2, 7,2, 5.2,0.012,"|>");
   ar->DrawArrow(4,24,6,24,0.012,"|>");
   ar->DrawArrow(4,20,6,20,0.012,"|>");
   ar->DrawArrow(4,16,6,16,0.012,"|>");
   ar->DrawArrow(4,12,6,12,0.012,"|>");
   ar->DrawArrow(4, 8,6, 8,0.012,"|>");
   ar->DrawArrow(10,20,14,20,0.012,"|>");
   ar->DrawArrow(12,23,14,23,0.012,"|>");
   ar->DrawArrow(12,16.5,14,16.5,0.012,"|>");
   ar->DrawArrow(10,12,12,12,0.012,"|>");
   TText *ta = new TText(2.2,22.2,"err = 0");
   ta->SetTextFont(71);
   ta->SetTextSize(0.015);
   ta->SetTextColor(4);
   ta->SetTextAlign(12);
   ta->Draw();
   ta->DrawText(2.2,18.2,"not found");
   ta->DrawText(2.2,6.2,"found");
   TText *tb = new TText(4.2,24.1,"err != 0");
   tb->SetTextFont(71);
   tb->SetTextSize(0.015);
   tb->SetTextColor(4);
   tb->SetTextAlign(11);
   tb->Draw();
   tb->DrawText(4.2,20.1,"found");
   tb->DrawText(4.2,16.1,"found");
   tb->DrawText(4.2,12.1,"found");
   tb->DrawText(4.2, 8.1,"not found");
   TLine *l1 = new TLine(12,16.5,12,23);
   l1->Draw();
}
{'fraction_non_alphanumeric': 0.23274924471299094, 'fraction_numerical': 0.12954682779456195, 'mean_word_length': 4.162819713038053, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 127, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5804653', 'n_tokens_mistral': 4156, 'n_tokens_neox': 3704, 'n_words': 531}