Skip to content

Commit 620779d

Browse files
committed
Update VBAexpressions.cls
1 parent 99e81b3 commit 620779d

File tree

1 file changed

+35
-31
lines changed

1 file changed

+35
-31
lines changed

src/VBAexpressions.cls

Lines changed: 35 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ Option Base 0
119119
'
120120
'///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
121121
' CONSTANTS:
122-
Private pi As Double
122+
Private PI As Double
123123
Private PID2 As Double
124124
Private e As Double
125125
Private Const op_plus As String = "+"
@@ -302,8 +302,8 @@ End Type
302302
''' </summary>
303303
Private 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
31213117
End 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

Comments
 (0)