@@ -119,7 +119,7 @@ Option Base 0
119119'
120120'///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
121121' CONSTANTS:
122- Private pi As Double
122+ Private PI As Double
123123Private PID2 As Double
124124Private e As Double
125125Private Const op_plus As String = "+"
@@ -302,8 +302,8 @@ End Type
302302''' </summary>
303303Private Sub Class_Initialize ()
304304 AssignedExpression = False
305- pi = 4 * Atn(1 )
306- PID2 = pi / 2
305+ PI = 4 * Atn(1 )
306+ PID2 = PI / 2
307307 e = Exp(1 )
308308 P_SEPARATORCHAR = ";"
309309 P_DEC_SYMBOL = dsDot
@@ -608,7 +608,7 @@ Public Sub AbstractAssignments()
608608 Dim tmpToken As token
609609 Dim BaseIndex As Long
610610 Dim n As Long
611- Dim tmpIdx As Long
611+ Dim tmpIdxRep As String
612612
613613 tUB = UBound(EvalTree)
614614 tkUB = UBound(EvalTree(tUB).Storage)
@@ -625,22 +625,26 @@ Public Sub AbstractAssignments()
625625 Else
626626 If EvalTree(tUB).Storage(i).Arg1.LinkedIndex <> -1 Then
627627 If EvalTree(tUB).Storage(i).Arg1.LinkedIndex >= BaseIndex Then
628- tmpIdx = EvalTree(tUB).Storage(i).Arg1.LinkedIndex
628+ LIndexConstruc(1 ) = EvalTree(tUB).Storage(i).Arg1.LinkedIndex
629+ tmpIdxRep = Join$(LIndexConstruc, vbNullString)
629630 EvalTree(tUB).Storage(i).Arg1.LinkedIndex = EvalTree(tUB).Storage(i).Arg1.LinkedIndex - j
631+ LIndexConstruc(1 ) = EvalTree(tUB).Storage(i).Arg1.LinkedIndex
630632 EvalTree(tUB).Storage(i).DefString = Replace( _
631633 EvalTree(tUB).Storage(i).DefString, _
632- d_lSquareB & tmpIdx & d_rSquareB , _
633- d_lSquareB & EvalTree(tUB).Storage(i).Arg1.LinkedIndex & d_rSquareB )
634+ tmpIdxRep , _
635+ Join$(LIndexConstruc, vbNullString) )
634636 End If
635637 End If
636638 If EvalTree(tUB).Storage(i).Arg2.LinkedIndex <> -1 Then
637639 If EvalTree(tUB).Storage(i).Arg2.LinkedIndex >= BaseIndex Then
638- tmpIdx = EvalTree(tUB).Storage(i).Arg2.LinkedIndex
640+ LIndexConstruc(1 ) = EvalTree(tUB).Storage(i).Arg2.LinkedIndex
641+ tmpIdxRep = Join$(LIndexConstruc, vbNullString)
639642 EvalTree(tUB).Storage(i).Arg2.LinkedIndex = EvalTree(tUB).Storage(i).Arg2.LinkedIndex - j
643+ LIndexConstruc(1 ) = EvalTree(tUB).Storage(i).Arg2.LinkedIndex
640644 EvalTree(tUB).Storage(i).DefString = Replace( _
641645 EvalTree(tUB).Storage(i).DefString, _
642- d_lSquareB & tmpIdx & d_rSquareB , _
643- d_lSquareB & EvalTree(tUB).Storage(i).Arg2.LinkedIndex & d_rSquareB )
646+ tmpIdxRep , _
647+ Join$(LIndexConstruc, vbNullString) )
644648 End If
645649 End If
646650 i = i + 1
@@ -1040,7 +1044,7 @@ Private Function ArcCos(ByRef expression As String, ByRef fName As String) As St
10401044 tmpEval = CDbl(expression)
10411045 tmpEval = Atn(-tmpEval / Sqr(-tmpEval * tmpEval + 1 )) + 2 * Atn(1 )
10421046 If P_DEGREES Then
1043- tmpEval = tmpEval * 180 / pi
1047+ tmpEval = tmpEval * 180 / PI
10441048 End If
10451049 ArcCos = CStr(tmpEval)
10461050 Exit Function
@@ -1057,7 +1061,7 @@ Private Function ArcSin(ByRef expression As String, ByRef fName As String) As St
10571061 tmpEval = CDbl(expression)
10581062 tmpEval = Atn(tmpEval / Sqr(-tmpEval * tmpEval + 1 ))
10591063 If P_DEGREES Then
1060- tmpEval = tmpEval * 180 / pi
1064+ tmpEval = tmpEval * 180 / PI
10611065 End If
10621066 ArcSin = CStr(tmpEval)
10631067 Exit Function
@@ -1074,7 +1078,7 @@ Private Function ArcTan(ByRef expression As String, ByRef fName As String) As St
10741078 tmpEval = CDbl(expression)
10751079 tmpEval = Atn(tmpEval)
10761080 If P_DEGREES Then
1077- tmpEval = tmpEval * 180 / pi
1081+ tmpEval = tmpEval * 180 / PI
10781082 End If
10791083 ArcTan = CStr(tmpEval)
10801084 Exit Function
@@ -1728,19 +1732,11 @@ Private Sub BottomLevelEval(ByRef aToken As token)
17281732 If aToken.OperationToken < 100 Then 'Arithmetic operators
17291733 Select Case aToken.OperationToken
17301734 Case OperatorToken.otSum
1731- If aToken.Arg1.Operand <> vbNullString Then
1732- aToken.EvalResult = CastOPtype(aToken.Arg1.Operand, aToken.Arg1.NegationFlagOn) _
1735+ aToken.EvalResult = CastOPtype(aToken.Arg1.Operand, aToken.Arg1.NegationFlagOn) _
17331736 + CastOPtype(aToken.Arg2.Operand, aToken.Arg2.NegationFlagOn)
1734- Else
1735- aToken.EvalResult = CastOPtype(aToken.Arg2.Operand, aToken.Arg2.NegationFlagOn)
1736- End If
17371737 Case OperatorToken.otDiff
1738- If aToken.Arg1.Operand <> vbNullString Then
1739- aToken.EvalResult = CastOPtype(aToken.Arg1.Operand, aToken.Arg1.NegationFlagOn) - _
1738+ aToken.EvalResult = CastOPtype(aToken.Arg1.Operand, aToken.Arg1.NegationFlagOn) - _
17401739 CastOPtype(aToken.Arg2.Operand, aToken.Arg2.NegationFlagOn)
1741- Else
1742- aToken.EvalResult = -1 * CastOPtype(aToken.Arg2.Operand, aToken.Arg2.NegationFlagOn)
1743- End If
17441740 Case OperatorToken.otMultiplication
17451741 aToken.EvalResult = CastOPtype(aToken.Arg1.Operand, aToken.Arg1.NegationFlagOn) * _
17461742 CastOPtype(aToken.Arg2.Operand, aToken.Arg2.NegationFlagOn)
@@ -1966,7 +1962,7 @@ Private Function CHISQ_(x As Double, n As Double) As Double
19661962 End If
19671963 p = Exp(-0.5 * x)
19681964 If (REM_(n, 2 ) = 1 ) Then
1969- p = p * Sqr(2 * x / pi )
1965+ p = p * Sqr(2 * x / PI )
19701966 End If
19711967 k = n
19721968 Do While (k >= 2 )
@@ -2377,7 +2373,7 @@ Private Function Cosin(ByRef expression As String, ByRef fName As String) As Str
23772373 On Error GoTo err_Handler
23782374 tmpEval = CDbl(expression)
23792375 If P_DEGREES Then
2380- tmpEval = tmpEval * pi / 180
2376+ tmpEval = tmpEval * PI / 180
23812377 End If
23822378 Cosin = CStr(Cos(tmpEval))
23832379 Exit Function
@@ -3115,7 +3111,7 @@ Private Function FACT(n As Double) As Double
31153111 pD = 0.577215664819072 + r * pC
31163112 r = 1 / (1 + r * pD)
31173113 If n > 0.5 Then
3118- r = (n * (1 - n) * pi ) / (r * Sin(pi * n))
3114+ r = (n * (1 - n) * PI ) / (r * Sin(PI * n))
31193115 End If
31203116 FACT = r
31213117End Function
@@ -3210,7 +3206,7 @@ Private Function FISHF_(F As Double, N1 As Double, N2 As Double) As Double
32103206 A = A + sth * cth * STATCOM(cth * cth, 2 , N2 - 3 , -1 ) / PID2
32113207 End If
32123208 If (N1 = 1 ) Then FISHF_ = 1 - A: Exit Function
3213- c = 4 * STATCOM(sth * sth, N2 + 1 , N1 + N2 - 4 , N2 - 2 ) * sth * (cth ^ N2) / pi
3209+ c = 4 * STATCOM(sth * sth, N2 + 1 , N1 + N2 - 4 , N2 - 2 ) * sth * (cth ^ N2) / PI
32143210 If (N2 = 1 ) Then FISHF_ = 1 - A + c / 2 : Exit Function
32153211 k = 2
32163212 Do While (k <= (N2 - 1 ) / 2 )
@@ -3941,7 +3937,11 @@ Private Function GetArithOpInfo(ByRef expression As String) As TokenInfo
39413937 Exit Do
39423938 End If
39433939 Else
3944- Exit Do
3940+ If InStrB(1 , op_AllNotUnaryItems, tmpTestChr) Then 'Unary
3941+ AddSymbolPos = GetOPeratorSymbolPos(expression, op_plus, AddSymbolPos + 2 )
3942+ Else
3943+ Exit Do
3944+ End If
39453945 End If
39463946 Loop
39473947 End If
@@ -3976,7 +3976,11 @@ Private Function GetArithOpInfo(ByRef expression As String) As TokenInfo
39763976 Exit Do
39773977 End If
39783978 Else
3979- Exit Do
3979+ If InStrB(1 , op_AllNotUnaryItems, tmpTestChr) Then 'Unary
3980+ SubtSymbolPos = GetOPeratorSymbolPos(expression, op_minus, SubtSymbolPos + 2 )
3981+ Else
3982+ Exit Do
3983+ End If
39803984 End If
39813985 Loop
39823986 End If
@@ -8125,7 +8129,7 @@ Private Function Sine(ByRef expression As String, ByRef fName As String) As Stri
81258129 On Error GoTo err_Handler
81268130 tmpEval = CDbl(expression)
81278131 If P_DEGREES Then
8128- tmpEval = tmpEval * pi / 180
8132+ tmpEval = tmpEval * PI / 180
81298133 End If
81308134 Sine = CStr(Sin(tmpEval))
81318135 Exit Function
@@ -8619,7 +8623,7 @@ Private Function Tangent(ByRef expression As String, ByRef fName As String) As S
86198623 On Error GoTo err_Handler
86208624 tmpEval = CDbl(expression)
86218625 If P_DEGREES Then
8622- tmpEval = tmpEval * pi / 180
8626+ tmpEval = tmpEval * PI / 180
86238627 End If
86248628 Tangent = CStr(Tan(tmpEval))
86258629 Exit Function
0 commit comments