{ "cells": [ { "cell_type": "markdown", "id": "5e8798f4", "metadata": {}, "source": [ "# analyze\n", " \\preview This macro produces the flowchart of TFormula::Analyze.\n", "\n", "\n", "\n", "\n", "**Author:** Rene Brun \n", "This notebook tutorial was automatically generated with ROOTBOOK-izer from the macro found in the ROOT repository on Tuesday, May 19, 2026 at 08:36 PM." ] }, { "cell_type": "code", "execution_count": 1, "id": "c0e2b2ef", "metadata": { "collapsed": false, "execution": { "iopub.execute_input": "2026-05-19T20:36:45.217089Z", "iopub.status.busy": "2026-05-19T20:36:45.216952Z", "iopub.status.idle": "2026-05-19T20:36:45.722256Z", "shell.execute_reply": "2026-05-19T20:36:45.721047Z" } }, "outputs": [], "source": [ "TCanvas *c1 = new TCanvas(\"c1\", \"Analyze.mac\", 620, 790);\n", "c1->Range(-1, 0, 19, 30);\n", "TPaveLabel *pl1 = new TPaveLabel(0, 27, 3.5, 29, \"Analyze\");\n", "pl1->SetFillColor(42);\n", "pl1->Draw();\n", "TPaveText *pt1 = new TPaveText(0, 22.8, 4, 25.2);\n", "TText *t1 = pt1->AddText(\"Parenthesis matching\");\n", "TText *t2 = pt1->AddText(\"Remove unnecessary\");\n", "TText *t2a = pt1->AddText(\"parenthesis\");\n", "pt1->Draw();\n", "TPaveText *pt2 = new TPaveText(6, 23, 10, 25);\n", "TText *t3 = pt2->AddText(\"break of\");\n", "TText *t4 = pt2->AddText(\"Analyze\");\n", "pt2->Draw();\n", "TPaveText *pt3 = new TPaveText(0, 19, 4, 21);\n", "t4 = pt3->AddText(\"look for simple\");\n", "TText *t5 = pt3->AddText(\"operators\");\n", "pt3->Draw();\n", "TPaveText *pt4 = new TPaveText(0, 15, 4, 17);\n", "TText *t6 = pt4->AddText(\"look for an already\");\n", "TText *t7 = pt4->AddText(\"defined expression\");\n", "pt4->Draw();\n", "TPaveText *pt5 = new TPaveText(0, 11, 4, 13);\n", "TText *t8 = pt5->AddText(\"look for usual\");\n", "TText *t9 = pt5->AddText(\"functions :cos sin ..\");\n", "pt5->Draw();\n", "TPaveText *pt6 = new TPaveText(0, 7, 4, 9);\n", "TText *t10 = pt6->AddText(\"look for a\");\n", "TText *t11 = pt6->AddText(\"numeric value\");\n", "pt6->Draw();\n", "TPaveText *pt7 = new TPaveText(6, 18.5, 10, 21.5);\n", "TText *t12 = pt7->AddText(\"Analyze left and\");\n", "TText *t13 = pt7->AddText(\"right part of\");\n", "TText *t14 = pt7->AddText(\"the expression\");\n", "pt7->Draw();\n", "TPaveText *pt8 = new TPaveText(6, 15, 10, 17);\n", "TText *t15 = pt8->AddText(\"Replace expression\");\n", "pt8->Draw();\n", "TPaveText *pt9 = new TPaveText(6, 11, 10, 13);\n", "TText *t16 = pt9->AddText(\"Analyze\");\n", "pt9->SetFillColor(42);\n", "pt9->Draw();\n", "TPaveText *pt10 = new TPaveText(6, 7, 10, 9);\n", "TText *t17 = pt10->AddText(\"Error\");\n", "TText *t18 = pt10->AddText(\"Break of Analyze\");\n", "pt10->Draw();\n", "TPaveText *pt11 = new TPaveText(14, 22, 17, 24);\n", "pt11->SetFillColor(42);\n", "TText *t19 = pt11->AddText(\"Analyze\");\n", "TText *t19a = pt11->AddText(\"Left\");\n", "pt11->Draw();\n", "TPaveText *pt12 = new TPaveText(14, 19, 17, 21);\n", "pt12->SetFillColor(42);\n", "TText *t20 = pt12->AddText(\"Analyze\");\n", "TText *t20a = pt12->AddText(\"Right\");\n", "pt12->Draw();\n", "TPaveText *pt13 = new TPaveText(14, 15, 18, 18);\n", "TText *t21 = pt13->AddText(\"StackNumber++\");\n", "TText *t22 = pt13->AddText(\"operator[StackNumber]\");\n", "TText *t23 = pt13->AddText(\"= operator found\");\n", "pt13->Draw();\n", "TPaveText *pt14 = new TPaveText(12, 10.8, 17, 13.2);\n", "TText *t24 = pt14->AddText(\"StackNumber++\");\n", "TText *t25 = pt14->AddText(\"operator[StackNumber]\");\n", "TText *t26 = pt14->AddText(\"= function found\");\n", "pt14->Draw();\n", "TPaveText *pt15 = new TPaveText(6, 7, 10, 9);\n", "TText *t27 = pt15->AddText(\"Error\");\n", "TText *t28 = pt15->AddText(\"break of Analyze\");\n", "pt15->Draw();\n", "TPaveText *pt16 = new TPaveText(0, 2, 7, 5);\n", "TText *t29 = pt16->AddText(\"StackNumber++\");\n", "TText *t30 = pt16->AddText(\"operator[StackNumber] = 0\");\n", "TText *t31 = pt16->AddText(\"value[StackNumber] = value found\");\n", "pt16->Draw();\n", "TArrow *ar = new TArrow(2, 27, 2, 25.4, 0.012, \"|>\");\n", "ar->SetFillColor(1);\n", "ar->Draw();\n", "ar->DrawArrow(2, 22.8, 2, 21.2, 0.012, \"|>\");\n", "ar->DrawArrow(2, 19, 2, 17.2, 0.012, \"|>\");\n", "ar->DrawArrow(2, 15, 2, 13.2, 0.012, \"|>\");\n", "ar->DrawArrow(2, 11, 2, 9.2, 0.012, \"|>\");\n", "ar->DrawArrow(2, 7, 2, 5.2, 0.012, \"|>\");\n", "ar->DrawArrow(4, 24, 6, 24, 0.012, \"|>\");\n", "ar->DrawArrow(4, 20, 6, 20, 0.012, \"|>\");\n", "ar->DrawArrow(4, 16, 6, 16, 0.012, \"|>\");\n", "ar->DrawArrow(4, 12, 6, 12, 0.012, \"|>\");\n", "ar->DrawArrow(4, 8, 6, 8, 0.012, \"|>\");\n", "ar->DrawArrow(10, 20, 14, 20, 0.012, \"|>\");\n", "ar->DrawArrow(12, 23, 14, 23, 0.012, \"|>\");\n", "ar->DrawArrow(12, 16.5, 14, 16.5, 0.012, \"|>\");\n", "ar->DrawArrow(10, 12, 12, 12, 0.012, \"|>\");\n", "TText *ta = new TText(2.2, 22.2, \"err = 0\");\n", "ta->SetTextFont(71);\n", "ta->SetTextSize(0.015);\n", "ta->SetTextColor(4);\n", "ta->SetTextAlign(12);\n", "ta->Draw();\n", "ta->DrawText(2.2, 18.2, \"not found\");\n", "ta->DrawText(2.2, 6.2, \"found\");\n", "TText *tb = new TText(4.2, 24.1, \"err != 0\");\n", "tb->SetTextFont(71);\n", "tb->SetTextSize(0.015);\n", "tb->SetTextColor(4);\n", "tb->SetTextAlign(11);\n", "tb->Draw();\n", "tb->DrawText(4.2, 20.1, \"found\");\n", "tb->DrawText(4.2, 16.1, \"found\");\n", "tb->DrawText(4.2, 12.1, \"found\");\n", "tb->DrawText(4.2, 8.1, \"not found\");\n", "TLine *l1 = new TLine(12, 16.5, 12, 23);\n", "l1->Draw();" ] }, { "cell_type": "markdown", "id": "9d64590a", "metadata": {}, "source": [ "Draw all canvases " ] }, { "cell_type": "code", "execution_count": 2, "id": "261861ed", "metadata": { "collapsed": false, "execution": { "iopub.execute_input": "2026-05-19T20:36:45.723749Z", "iopub.status.busy": "2026-05-19T20:36:45.723597Z", "iopub.status.idle": "2026-05-19T20:36:45.954759Z", "shell.execute_reply": "2026-05-19T20:36:45.953743Z" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "