722 Int_t valeur,find,
n,i,j,k,lchain,nomb,virgule,inter,nest;
723 valeur=find=
n=i=j=k=lchain=nomb=virgule=inter=nest = 0;
724 Int_t compt,compt2,compt3,compt4;
729 TString s,chaine_error,chaine1ST;
734 Int_t modulo,plus,puiss10,puiss10bis,moins,multi,divi,puiss,et,ou,petit,grand,egal,diff,peteg,grdeg,etx,oux,rshift,lshift,tercond,terelse;
739 Int_t actionCode,actionParam;
747 while (parenthese && lchain>0 &&
err==0){
752 if (lchain==0)
err=4;
754 for (i=1; i<=lchain; ++i) {
755 if (chaine(i-1,1) ==
"\"") inString = !inString;
757 if (chaine(i-1,1) ==
"[") compt2++;
758 if (chaine(i-1,1) ==
"]") compt2--;
759 if (chaine(i-1,1) ==
"(") compt++;
760 if (chaine(i-1,1) ==
")") compt--;
762 if (compt < 0)
err = 40;
763 if (compt2< 0)
err = 42;
764 if (compt==0 && (i!=lchain || lchain==1)) parenthese =
kFALSE;
767 if (compt > 0)
err = 41;
768 if (compt2> 0)
err = 43;
769 if (parenthese) chaine = chaine(1,lchain-2);
773 if (lchain==0)
err=4;
774 modulo=plus=moins=multi=divi=puiss=et=ou=petit=grand=egal=diff=peteg=grdeg=etx=oux=rshift=lshift=tercond=terelse=0;
779 compt = compt2 = compt3 = compt4 = 0;puiss10=0;puiss10bis = 0;
784 for (i=1;i<=lchain; i++) {
786 puiss10=puiss10bis=0;
789 isdecimal = isdecimal && (strchr(
"0123456789.",t)!=
nullptr);
791 if ( chaine[i-2] ==
'e' || chaine[i-2] ==
'E' ) puiss10 = 1;
792 }
else if ( strchr(
"+-/[]()&|><=!*/%^\\",t) ) {
797 if (chaine[j-2] ==
'e' || chaine[j-2] ==
'E') {
798 Bool_t isrightdecimal =
true;
800 for(k=j-3; k>=0 && isrightdecimal; --k) {
802 isrightdecimal = isrightdecimal && (strchr(
"0123456789.",t)!=
nullptr);
803 if (!isrightdecimal) {
804 if (strchr(
"+-/[]()&|><=!*/%^\\",t)!=
nullptr) {
809 if (k<0 && isrightdecimal) puiss10bis = 1;
812 if (puiss10 && (i<=lchain)) {
814 puiss10 = (strchr(
"0123456789.",t)!=
nullptr);
816 if (puiss10bis && (j<=lchain)) {
818 puiss10bis = (strchr(
"0123456789.",t)!=
nullptr);
821 if (chaine(i-1,1) ==
"\"") inString = !inString;
822 if (inString)
continue;
823 if (chaine(i-1,1) ==
"[") compt2++;
824 if (chaine(i-1,1) ==
"]") compt2--;
825 if (chaine(i-1,1) ==
"(") compt++;
826 if (chaine(i-1,1) ==
")") compt--;
827 if (chaine(j-1,1) ==
"[") compt3++;
828 if (chaine(j-1,1) ==
"]") compt3--;
829 if (chaine(j-1,1) ==
"(") compt4++;
830 if (chaine(j-1,1) ==
")") compt4--;
831 if (chaine(i-1,2)==
"&&" && !inString && compt==0 && compt2==0 && et==0) {et=i;puiss=0;}
832 if (chaine(i-1,2)==
"||" && compt==0 && compt2==0 && ou==0) {puiss10=0; ou=i;}
833 if (chaine(i-1,1)==
"&" && compt==0 && compt2==0 && etx==0) {etx=i;puiss=0;}
834 if (chaine(i-1,1)==
"|" && compt==0 && compt2==0 && oux==0) {puiss10=0; oux=i;}
835 if (chaine(i-1,2)==
">>" && compt==0 && compt2==0 && rshift==0) {puiss10=0; rshift=i;}
836 if (chaine(i-1,1)==
">" && compt==0 && compt2==0 && rshift==0 && grand==0)
837 {puiss10=0; grand=i;}
838 if (chaine(i-1,2)==
"<<" && compt==0 && compt2==0 && lshift==0) {puiss10=0; lshift=i;}
839 if (chaine(i-1,1)==
"<" && compt==0 && compt2==0 && lshift==0 && petit==0)
843 for(
int ip = i,depth=0; ip < lchain; ++ip) {
847 if (isalnum(
c) ||
c==
'_' ||
c==
',')
continue;
848 if (
c==
':' && chaine(ip+1)==
':') { ++ip;
continue; }
849 if (
c==
'<') { ++depth;
continue; }
851 if (depth) { --depth;
continue; }
867 if ((chaine(i-1,2)==
"<=" || chaine(i-1,2)==
"=<") && compt==0 && compt2==0
868 && peteg==0) {peteg=i; puiss10=0; petit=0;}
869 if ((chaine(i-1,2)==
"=>" || chaine(i-1,2)==
">=") && compt==0 && compt2==0
870 && grdeg==0) {puiss10=0; grdeg=i; grand=0;}
871 if (chaine(i-1,2) ==
"==" && compt == 0 && compt2 == 0 && egal == 0) {puiss10=0; egal=i;}
872 if (chaine(i-1,2) ==
"!=" && compt == 0 && compt2 == 0 && diff == 0) {puiss10=0; diff=i;}
873 if (i>1 && chaine(i-1,1) ==
"+" && compt == 0 && compt2 == 0 && puiss10==0) plus=i;
874 if (chaine(j-1,1) ==
"-" && chaine(j-2,1) !=
"*" && chaine(j-2,1) !=
"/"
875 && chaine(j-2,1)!=
"^" && compt3==0 && compt4==0 && moins==0 && puiss10bis==0) moins=j;
876 if (chaine(i-1,1)==
"%" && compt==0 && compt2==0 && modulo==0) {puiss10=0; modulo=i;}
877 if (chaine(i-1,1)==
"*" && compt==0 && compt2==0 && multi==0) {puiss10=0; multi=i;}
878 if (chaine(j-1,1)==
"/" && chaine(j-2,1)!=
"\\"
879 && compt4==0 && compt3==0 && divi==0)
883 if (chaine(j-1)==
'^' && compt4==0 && compt3==0 && puiss==0) {puiss10=0; puiss=j;}
884 if (chaine(i-1)==
'?' && compt == 0 && compt2 == 0 && tercond == 0) {puiss10=0; tercond=i;}
885 if (chaine(i-1)==
':' && tercond && compt == 0 && compt2 == 0 && terelse == 0) {
886 if (i>2 && chaine(i-2)!=
':' && chaine(i)!=
':') {
887 puiss10=0; terelse=i;
897 if (tercond && terelse) {
898 if (tercond == 1 || terelse == lchain || tercond == (terelse-1) ) {
903 ctemp = chaine(0,tercond-1);
913 ctemp = chaine(tercond,terelse-tercond-1);
916 SetAction(optloc, actionCode, actionParam);
926 ctemp = chaine(terelse,lchain-terelse);
930 SetAction(optloc, actionCode, actionParam);
937 }
else if (ou != 0) {
938 if (ou==1 || ou==lchain-1) {
943 ctemp = chaine(0,ou-1);
952 ctemp = chaine(ou+1,lchain-ou-1);
963 if (et==1 || et==lchain-1) {
968 ctemp = chaine(0,et-1);
978 ctemp = chaine(et+1,lchain-et-1);
989 if (oux==1 || oux==lchain) {
994 ctemp = chaine(0,oux-1);
997 ctemp = chaine(oux,lchain-oux);
1005 }
else if (etx!=0) {
1006 if (etx==1 || etx==lchain) {
1011 ctemp = chaine(0,etx-1);
1014 ctemp = chaine(etx,lchain-etx);
1022 }
else if (petit != 0) {
1023 if (petit==1 || petit==lchain) {
1028 ctemp = chaine(0,petit-1);
1031 ctemp = chaine(petit,lchain-petit);
1039 }
else if (grand != 0) {
1040 if (grand==1 || grand==lchain) {
1045 ctemp = chaine(0,grand-1);
1048 ctemp = chaine(grand,lchain-grand);
1056 }
else if (peteg != 0) {
1057 if (peteg==1 || peteg==lchain-1) {
1062 ctemp = chaine(0,peteg-1);
1064 ctemp = chaine(peteg+1,lchain-peteg-1);
1073 }
else if (grdeg != 0) {
1074 if (grdeg==1 || grdeg==lchain-1) {
1079 ctemp = chaine(0,grdeg-1);
1082 ctemp = chaine(grdeg+1,lchain-grdeg-1);
1090 }
else if (egal != 0) {
1091 if (egal==1 || egal==lchain-1) {
1096 ctemp = chaine(0,egal-1);
1100 ctemp = chaine(egal+1,lchain-egal-1);
1106 if (
IsString(optloc) != isstring) {
1108 chaine_error =
"==";
1109 }
else if (isstring) {
1115 }
else if (diff != 0) {
1116 if (diff==1 || diff==lchain-1) {
1118 chaine_error =
"!=";
1121 ctemp = chaine(0,diff-1);
1125 ctemp = chaine(diff+1,lchain-diff-1);
1131 if (
IsString(optloc) != isstring) {
1133 chaine_error =
"!=";
1134 }
else if (isstring) {
1140 }
else if (plus != 0) {
1146 ctemp = chaine(0,plus-1);
1149 ctemp = chaine(plus,lchain-plus);
1160 ctemp = chaine(moins,lchain-moins);
1168 if (moins == lchain) {
1172 ctemp = chaine(0,moins-1);
1175 ctemp = chaine(moins,lchain-moins);
1184 }
else if (modulo != 0) {
1185 if (modulo == 1 || modulo == lchain) {
1189 ctemp = chaine(0,modulo-1);
1192 ctemp = chaine(modulo,lchain-modulo);
1200 }
else if (rshift != 0) {
1201 if (rshift == 1 || rshift == lchain) {
1205 ctemp = chaine(0,rshift-1);
1208 ctemp = chaine(rshift+1,lchain-rshift-1);
1216 }
else if (lshift != 0) {
1217 if (lshift == 1 || lshift == lchain) {
1221 ctemp = chaine(0,lshift-1);
1224 ctemp = chaine(lshift+1,lchain-lshift-1);
1234 if (multi == 1 || multi == lchain) {
1239 ctemp = chaine(0,multi-1);
1242 ctemp = chaine(multi,lchain-multi);
1252 if (divi == 1 || divi == lchain) {
1257 ctemp = chaine(0,divi-1);
1260 ctemp = chaine(divi,lchain-divi);
1270 if (puiss == 1 || puiss == lchain) {
1272 chaine_error =
"**";
1275 if (chaine(lchain-2,2) ==
"^2") {
1276 ctemp =
"sq(" + chaine(0,lchain-2) +
")";
1279 ctemp = chaine(0,puiss-1);
1282 ctemp = chaine(puiss,lchain-puiss);
1300 if ((chaine(0,2)==
"0x")||(chaine(0,2)==
"0X")) isHexa=
kTRUE;
1301 for (j=0; j<chaine.
Length() &&
err==0; j++) {
1304 if (j>0 && (chaine(j,1)==
"e" || chaine(j,2)==
"e+" || chaine(j,2)==
"e-" || chaine(j,1)==
"E" || chaine(j,2)==
"E+" || chaine(j,2)==
"E-")) {
1307 chaine_error=chaine;
1314 if (chaine(j,2)==
"e+" || chaine(j,2)==
"e-" || chaine(j,2)==
"E+" || chaine(j,2)==
"E-") j++;
1317 if (chaine(j,1) ==
"." && !hasDot) hasDot =
kTRUE;
1322 if (!strchr(
"0123456789",t) && (chaine(j,1)!=
"+" || j!=0)) {
1324 chaine_error=chaine;
1330 if (!strchr(
"0123456789abcdefABCDEF",t) && (j>1)) {
1332 chaine_error=chaine;
1338 if (!isHexa) {
if (sscanf((
const char*)chaine,
"%lg",&vafConst) > 0)
err = 0;
else err =1;}
1339 else {
if (sscanf((
const char*)chaine,
"%lx",&vafConst2) > 0)
err = 0;
else err=1;
1344 if (vafConst ==
fConst[j] ) k= j;
1361 oldformula = (
const TFormula*)
gROOT->GetListOfFunctions()->FindObject((
const char*)chaine);
1363 if (oldformula && strcmp(schain,oldformula->
GetTitle())) {
1374 for (
Int_t ipar=0;ipar<npold;ipar++) {
1394 chaine_error = ctemp;
1395 }
else if ( k >= 0 ) {
1397 actionCode = action;
1406 }
else if (chaine(0,1) ==
"!") {
1407 ctemp = chaine(1,lchain-1);
1414 }
else if (chaine(0,1)==
"\"" && chaine(chaine.
Length()-1,1)==
"\"") {
1420 }
else if (chaine(0,4) ==
"cos(") {
1421 ctemp = chaine(3,lchain-3);
1428 }
else if (chaine(0,4) ==
"sin(") {
1429 ctemp = chaine(3,lchain-3);
1436 }
else if (chaine(0,4) ==
"tan(") {
1437 ctemp = chaine(3,lchain-3);
1444 }
else if (chaine(0,5) ==
"acos(") {
1445 ctemp = chaine(4,lchain-4);
1452 }
else if (chaine(0,5) ==
"asin(") {
1453 ctemp = chaine(4,lchain-4);
1460 }
else if (chaine(0,5) ==
"atan(") {
1461 ctemp = chaine(4,lchain-4);
1468 }
else if (chaine(0,5) ==
"cosh(") {
1469 ctemp = chaine(4,lchain-4);
1476 }
else if (chaine(0,5) ==
"sinh(") {
1477 ctemp = chaine(4,lchain-4);
1484 }
else if (chaine(0,5) ==
"tanh(") {
1485 ctemp = chaine(4,lchain-4);
1492 }
else if (chaine(0,6) ==
"acosh(") {
1493 ctemp = chaine(5,lchain-5);
1500 }
else if (chaine(0,6) ==
"asinh(") {
1501 ctemp = chaine(5,lchain-5);
1508 }
else if (chaine(0,6) ==
"atanh(") {
1509 ctemp = chaine(5,lchain-5);
1516 }
else if (chaine(0,3) ==
"sq(") {
1517 ctemp = chaine(2,lchain-2);
1524 }
else if (chaine(0,4) ==
"log(") {
1525 ctemp = chaine(3,lchain-3);
1532 }
else if (chaine(0,6) ==
"log10(") {
1533 ctemp = chaine(5,lchain-5);
1540 }
else if (chaine(0,4) ==
"exp(") {
1541 ctemp = chaine(3,lchain-3);
1548 }
else if (chaine(0,4) ==
"abs(") {
1549 ctemp = chaine(3,lchain-3);
1556 }
else if (chaine(0,5) ==
"sign(") {
1557 ctemp = chaine(4,lchain-4);
1564 }
else if (chaine(0,4) ==
"int(") {
1565 ctemp = chaine(3,lchain-3);
1572 }
else if (chaine ==
"rndm" || chaine(0,5) ==
"rndm(") {
1577 }
else if (chaine(0,5) ==
"sqrt(") {
1578 ctemp = chaine(4,lchain-4);
1588 }
else if ( chaine ==
"expo" || chaine(0,5)==
"expo("
1589 || (lchain==5 && chaine(1,4)==
"expo")
1590 || (lchain==6 && chaine(2,4)==
"expo")
1591 || chaine(1,5)==
"expo(" || chaine(2,5)==
"expo(" ) {
1593 if (chaine(1,4) ==
"expo") {
1598 else if (ctemp==
"y") {
1601 else if (ctemp==
"z") {
1604 else if (ctemp==
"t") {
1609 chaine_error=chaine1ST;
1611 chaine=chaine(1,lchain-1);
1614 if (chaine(2,4) ==
"expo") {
1615 if (chaine(0,2) !=
"xy") {
1617 chaine_error=chaine1ST;
1622 chaine=chaine(2,lchain-2);
1630 actionCode =
kexpo + inter2;
1631 actionParam = offset;
1633 if (inter2 == 5+offset &&
fNpar < 3+offset)
fNpar = 3+offset;
1642 }
else if (chaine(4,1) ==
"(") {
1643 ctemp = chaine(5,lchain-6);
1645 for (j=0; j<ctemp.
Length(); j++) {
1647 if (strchr(
"0123456789",t)==
nullptr && (ctemp(j,1)!=
"+" || j!=0)) {
1649 chaine_error=chaine1ST;
1653 auto res = sscanf(ctemp.
Data(),
"%d", &inter);
1654 if (res == 1 && inter >= 0) {
1656 actionCode =
kexpo + inter2;
1657 actionParam = inter;
1659 if (inter2 == 5) inter++;
1670 chaine_error=chaine;
1675 }
else if (chaine==
"gaus"
1676 || (lchain==5 && chaine(1,4)==
"gaus")
1677 || (lchain==6 && chaine(2,4)==
"gaus")
1678 || chaine(0,5)==
"gaus(" || chaine(1,5)==
"gaus(" || chaine(2,5)==
"gaus(") {
1680 if (chaine(1,4) ==
"gaus") {
1685 else if (ctemp==
"y") {
1688 else if (ctemp==
"z") {
1691 else if (ctemp==
"t") {
1696 chaine_error=chaine1ST;
1698 chaine=chaine(1,lchain-1);
1701 if (chaine(2,4) ==
"gaus") {
1702 if (chaine(0,2) !=
"xy") {
1704 chaine_error=chaine1ST;
1709 chaine=chaine(2,lchain-2);
1714 if (lchain == 4 &&
err==0) {
1718 actionCode =
kgaus + inter2;
1719 actionParam = offset;
1721 if (inter2 == 5+offset &&
fNpar < 5+offset)
fNpar = 5+offset;
1730 }
else if (chaine(4,1) ==
"(" &&
err==0) {
1731 ctemp = chaine(5,lchain-6);
1733 for (j=0; j<ctemp.
Length(); j++) {
1735 if (strchr(
"0123456789",t)==
nullptr && (ctemp(j,1)!=
"+" || j!=0)) {
1737 chaine_error=chaine1ST;
1741 auto res = sscanf(ctemp.
Data(),
"%d", &inter);
1742 if (res == 1 && inter >= 0) {
1744 actionCode =
kgaus + inter2;
1745 actionParam = inter;
1747 if (inter2 == 5) inter += 2;
1755 }
else if (
err == 0) {
1757 chaine_error = chaine1ST;
1762 }
else if (chaine==
"landau" || (lchain==7 && chaine(1,6)==
"landau")
1763 || (lchain==8 && chaine(2,6)==
"landau")
1764 || chaine(0,7)==
"landau(" || chaine(1,7)==
"landau(" || chaine(2,7)==
"landau(") {
1766 if (chaine(1,6) ==
"landau") {
1771 else if (ctemp==
"y") {
1774 else if (ctemp==
"z") {
1777 else if (ctemp==
"t") {
1782 chaine_error=chaine1ST;
1784 chaine=chaine(1,lchain-1);
1787 if (chaine(2,6) ==
"landau") {
1788 if (chaine(0,2) !=
"xy") {
1790 chaine_error=chaine1ST;
1795 chaine=chaine(2,lchain-2);
1800 if (lchain == 6 &&
err==0) {
1804 actionCode =
klandau + inter2;
1805 actionParam = offset;
1807 if (inter2 == 5+offset &&
fNpar < 5+offset)
fNpar = 5+offset;
1816 }
else if (chaine(6,1) ==
"(" &&
err==0) {
1817 ctemp = chaine(7,lchain-8);
1819 for (j=0; j<ctemp.
Length(); j++) {
1821 if (strchr(
"0123456789",t)==
nullptr && (ctemp(j,1)!=
"+" || j!=0)) {
1823 chaine_error=chaine1ST;
1827 auto res = sscanf(ctemp.
Data(),
"%d", &inter);
1828 if (res == 1 && inter >= 0) {
1830 actionCode =
klandau + inter2;
1831 actionParam = inter;
1833 if (inter2 == 5) inter += 2;
1841 }
else if (
err == 0) {
1843 chaine_error = chaine1ST;
1848 }
else if (chaine(0,3) ==
"pol" || chaine(1,3) ==
"pol") {
1850 if (chaine(1,3) ==
"pol") {
1855 else if (ctemp==
"y") {
1858 else if (ctemp==
"z") {
1861 else if (ctemp==
"t") {
1866 chaine_error=chaine1ST;
1868 chaine=chaine(1,lchain-1);
1871 if (chaine(lchain-1,1) ==
")") {
1873 for (j=3;j<lchain;j++)
if (chaine(j,1)==
"(" && nomb == 0) nomb = j;
1874 if (nomb == 3)
err = 23;
1875 if (nomb == 0)
err = 40;
1876 ctemp = chaine(nomb+1,lchain-nomb-2);
1877 for (j=0; j<ctemp.
Length(); j++) {
1879 if (strchr(
"0123456789",t)==
nullptr && (ctemp(j,1)!=
"+" || j!=0)) {
1881 chaine_error=chaine1ST;
1885 auto res = sscanf(ctemp.
Data(),
"%d", &inter);
1886 if (res != 1 || inter < 0)
1896 ctemp = chaine(3,nomb-3);
1897 if (sscanf(ctemp.
Data(),
"%d",&
n) > 0) {
1898 if (
n < 0 )
err = 24;
1899 if (
n >= 20)
err = 25;
1904 actionCode =
kpol+(inter2-1);
1905 actionParam =
n*100+inter+2;
1918 }
else if (chaine(0,4) ==
"pow(") {
1919 compt = 4; nomb = 0; virgule = 0; nest=0;
1920 while(compt != lchain) {
1922 if (chaine(compt-1,1) ==
"(") nest++;
1923 else if (chaine(compt-1,1) ==
")") nest--;
1924 else if (chaine(compt-1,1) ==
"," && nest==0) {
1926 if (nomb == 1 && virgule == 0) virgule = compt;
1929 if (nomb != 1)
err = 22;
1931 ctemp = chaine(4,virgule-5);
1934 ctemp = chaine(virgule,lchain-virgule-1);
1942 }
else if (chaine(0,7) ==
"strstr(") {
1943 compt = 7; nomb = 0; virgule = 0; nest=0;
1945 while(compt != lchain) {
1947 if (chaine(compt-1,1) ==
"\"") {
1948 inString = !inString;
1949 }
else if (!inString) {
1950 if (chaine(compt-1,1) ==
"(") nest++;
1951 else if (chaine(compt-1,1) ==
")") nest--;
1952 else if (chaine(compt-1,1) ==
"," && nest==0) {
1954 if (nomb == 1 && virgule == 0) virgule = compt;
1958 if (nomb != 1)
err = 28;
1960 ctemp = chaine(7,virgule-8);
1964 ctemp = chaine(virgule,lchain-virgule-1);
1973 chaine_error =
"strstr";
1976 }
else if (chaine(0,4) ==
"min(") {
1977 compt = 4; nomb = 0; virgule = 0; nest=0;
1978 while(compt != lchain) {
1980 if (chaine(compt-1,1) ==
"(") nest++;
1981 else if (chaine(compt-1,1) ==
")") nest--;
1982 else if (chaine(compt-1,1) ==
"," && nest==0) {
1984 if (nomb == 1 && virgule == 0) virgule = compt;
1992 ctemp = chaine(4,virgule-5);
1995 ctemp = chaine(virgule,lchain-virgule-1);
2003 }
else if (chaine(0,4) ==
"max(") {
2004 compt = 4; nomb = 0; virgule = 0; nest=0;
2005 while(compt != lchain) {
2007 if (chaine(compt-1,1) ==
"(") nest++;
2008 else if (chaine(compt-1,1) ==
")") nest--;
2009 else if (chaine(compt-1,1) ==
"," && nest==0) {
2011 if (nomb == 1 && virgule == 0) virgule = compt;
2019 ctemp = chaine(4,virgule-5);
2022 ctemp = chaine(virgule,lchain-virgule-1);
2031 }
else if (chaine(0,6) ==
"atan2(") {
2032 compt = 6; nomb = 0; virgule = 0; nest=0;
2033 while(compt != lchain) {
2035 if (chaine(compt-1,1) ==
"(") nest++;
2036 else if (chaine(compt-1,1) ==
")") nest--;
2037 else if (chaine(compt-1,1) ==
"," && nest==0) {
2039 if (nomb == 1 && virgule == 0) virgule = compt;
2042 if (nomb != 1)
err = 21;
2044 ctemp = chaine(6,virgule-7);
2047 ctemp = chaine(virgule,lchain-virgule-1);
2055 }
else if (chaine(0,5) ==
"fmod(") {
2056 compt = 5; nomb = 0; virgule = 0; nest=0;
2057 while(compt != lchain) {
2059 if (chaine(compt-1,1) ==
"(") nest++;
2060 else if (chaine(compt-1,1) ==
")") nest--;
2061 else if (chaine(compt-1,1) ==
"," && nest==0) {
2063 if (nomb == 1 && virgule == 0) virgule = compt;
2071 ctemp = chaine(5,virgule-6);
2074 ctemp = chaine(virgule,lchain-virgule-1);
2084 chaine_error = chaine;
2090 }
else if (chaine(0,1) ==
"[" && chaine(lchain-1,1) ==
"]") {
2093 ctemp = chaine(1,lchain-2);
2094 for (j=0; j<ctemp.
Length(); j++) {
2096 if (strchr(
"0123456789",t)==
nullptr && (ctemp(j,1)!=
"+" || j!=0)) {
2098 chaine_error=chaine1ST;
2102 auto res = sscanf(ctemp.
Data(),
"%d", &valeur);
2105 actionParam = offset + valeur;
2111 }
else if (chaine ==
"pi") {
2138 chaine_error =
"\""+chaine_error+
"\"";
2140 case 2 : er =
" Invalid Floating Point Operation";
break;
2141 case 4 : er =
" Empty String";
break;
2142 case 5 : er =
" Invalid Syntax " + chaine_error;
break;
2143 case 6 : er =
" Too many operators !";
break;
2144 case 7 : er =
" Too many parameters !";
break;
2145 case 10 : er =
" z specified but not x and y";
break;
2146 case 11 : er =
" z and y specified but not x";
break;
2147 case 12 : er =
" y specified but not x";
break;
2148 case 13 : er =
" z and x specified but not y";
break;
2149 case 20 : er =
" Non integer value for parameter number : " + chaine_error;
break;
2150 case 21 : er =
" ATAN2 requires two arguments";
break;
2151 case 22 : er =
" POW requires two arguments";
break;
2152 case 23 : er =
" Degree of polynomial not specified";
break;
2153 case 24 : er =
" Degree of polynomial must be positive";
break;
2154 case 25 : er =
" Degree of polynomial must be less than 20";
break;
2155 case 26 : er =
" Unknown name : " + chaine_error;
break;
2156 case 27 : er =
" Too many constants in expression";
break;
2157 case 28 : er =
" strstr requires two arguments";
break;
2158 case 29 : er =
" TFormula can only call interpreted and compiled functions that return a numerical type: " + chaine_error;
break;
2159 case 30 : er =
" Bad numerical expression : " + chaine_error;
break;
2160 case 31 : er =
" Part of the Variable " + chaine_error; er +=
" exists but some of it is not accessible or useable";
break;
2161 case 40 : er =
" '(' is expected";
break;
2162 case 41 : er =
" ')' is expected";
break;
2163 case 42 : er =
" '[' is expected";
break;
2164 case 43 : er =
" ']' is expected";
break;
2165 case 44 : er =
" The function '" + chaine(0,err_hint) +
"' requires two arguments.";
break;
2166 case 45 : er =
"The operator " + chaine_error +
" requires a numerical operand.";
break;
2167 case 46 : er =
"Both operands of the operator " + chaine_error +
" have to be either numbers or strings.";
break;
2168 case 47 : er = chaine_error +
" requires 2 string arguments";
break;