@@ -8323,7 +8323,6 @@ procedure TEvilC.Parse;
83238323 AssignReturnFuncRefOpEnd,
83248324 AssignReturnFuncRefStart,
83258325 AssignReturnFuncRefEnd: Integer;
8326- TmpKindSet: TSEValueKindSet;
83278326
83288327 procedure Logic ; forward ;
83298328
@@ -8560,7 +8559,7 @@ procedure TEvilC.Parse;
85608559 PushConstCount := 0 ;
85618560 IsTailed := True;
85628561 NextToken;
8563- TmpKindSet := ParseExpr;
8562+ ParseExpr(False) ;
85648563 NextTokenExpected([tkSquareBracketClose]);
85658564 AllocFuncRef;
85668565 AssignReturnFuncRef;
@@ -8700,7 +8699,7 @@ procedure TEvilC.Parse;
87008699 IsTailed := True;
87018700 NextToken;
87028701 EmitPushVar(Ident^, True);
8703- TmpKindSet := ParseExpr;
8702+ ParseExpr(False) ;
87048703 Emit([Pointer(opPushArrayPop), SENull]);
87058704 PeepholeArrayAssignOptimization;
87068705 NextTokenExpected([tkSquareBracketClose]);
@@ -8754,7 +8753,6 @@ procedure TEvilC.Parse;
87548753 EmitExpr([Pointer(opPushConst), FuncValue]);
87558754 end else
87568755 begin
8757- P := FindFunc(Token.Value , FuncValue.VarFuncKind, Ind);
87588756 Result := Result + ParseFuncCall(Token.Value );
87598757 end ;
87608758 if PeekAtNextToken.Kind in [tkSquareBracketOpen, tkDot] then
@@ -8944,11 +8942,11 @@ procedure TEvilC.Parse;
89448942 begin
89458943 NextToken;
89468944 JumpExpr2 := Emit([Pointer(opJumpEqual1Rel), False, Pointer(0 )]);
8947- Result := Result + ParseExpr;
8945+ Result := Result + ParseExpr(False) ;
89488946 NextTokenExpected([tkColon]);
89498947 JumpEnd := Emit([Pointer(opJumpUnconditionalRel), Pointer(0 )]);
89508948 Expr2Block := Self.Binary.Count;
8951- Result := Result + ParseExpr;
8949+ Result := Result + ParseExpr(False) ;
89528950 EndBlock := Self.Binary.Count;
89538951 Patch(JumpExpr2 - 1 , Pointer(Expr2Block) - (JumpExpr2 - 3 ));
89548952 Patch(JumpEnd - 1 , Pointer(EndBlock) - (JumpEnd - 2 ));
@@ -9435,7 +9433,7 @@ procedure TEvilC.Parse;
94359433 if IsComparison then
94369434 begin
94379435 OpCount := Self.OpcodeInfoList.Count;
9438- ParseExpr;
9436+ ParseExpr(False) ;
94399437 if (Self.OptimizePeephole) and
94409438 ((Self.OpcodeInfoList.Count - OpCount) = 1 ) and
94419439 (Self.OpcodeInfoList[OpCount].Op = opPushConst) and
@@ -9492,7 +9490,7 @@ procedure TEvilC.Parse;
94929490 if IsComparison then
94939491 begin
94949492 OpCount := Self.OpcodeInfoList.Count;
9495- ParseExpr;
9493+ ParseExpr(False) ;
94969494 if (Self.OptimizePeephole) and
94979495 ((Self.OpcodeInfoList.Count - OpCount) = 1 ) and
94989496 (Self.OpcodeInfoList[OpCount].Op = opPushConst) and
@@ -9568,12 +9566,12 @@ procedure TEvilC.Parse;
95689566 if Token.Kind = tkEqual then
95699567 begin
95709568
9571- ParseExpr;
9569+ ParseExpr(False) ;
95729570 EmitAssignVar(VarIdent);
95739571
95749572 Token := NextTokenExpected([tkTo, tkDownto]);
95759573
9576- ParseExpr;
9574+ ParseExpr(False) ;
95779575
95789576 if PeekAtNextToken.Kind = tkStep then
95799577 begin
@@ -9621,7 +9619,7 @@ procedure TEvilC.Parse;
96219619 Token.Value := VarHiddenArrayName;
96229620 VarHiddenArrayIdent := CreateIdent(ikVariable, Token, True, False);
96239621
9624- ParseExpr;
9622+ ParseExpr(False) ;
96259623
96269624 EmitAssignVar(VarHiddenArrayIdent);
96279625 Emit([Pointer(opPushConst), 0 ]);
@@ -9674,7 +9672,7 @@ procedure TEvilC.Parse;
96749672 JumpBlock2,
96759673 JumpEnd: Integer;
96769674 begin
9677- ParseExpr;
9675+ ParseExpr(False) ;
96789676 JumpBlock1 := Emit([Pointer(opJumpEqual1), True, Pointer(0 )]);
96799677 JumpBlock2 := Emit([Pointer(opJumpUnconditional), Pointer(0 )]);
96809678 StartBlock1 := Self.Binary.Count;
@@ -9709,7 +9707,7 @@ procedure TEvilC.Parse;
97099707 Token.Value := ' ___s' + Self.InternalIdent;
97109708 VarHiddenIdent := CreateIdent(ikVariable, Token, True, False);
97119709
9712- ParseExpr;
9710+ ParseExpr(False) ;
97139711 EmitAssignVar(VarHiddenIdent);
97149712
97159713 NextTokenExpected([tkBegin]);
@@ -9723,7 +9721,7 @@ procedure TEvilC.Parse;
97239721 Token := NextToken;
97249722 if Token.Kind = tkCase then
97259723 begin
9726- ParseExpr;
9724+ ParseExpr(False) ;
97279725 EmitPushVar(VarHiddenIdent);
97289726 JumpBlock1 := Emit([Pointer(opJumpEqual), Pointer(0 )]);
97299727 JumpBlock2 := Emit([Pointer(opJumpUnconditional), Pointer(0 )]);
@@ -9774,12 +9772,12 @@ procedure TEvilC.Parse;
97749772 Token := NextToken;
97759773 Emit([Pointer(opPushConst), Token.Value ]);
97769774 NextToken;
9777- ParseExpr;
9775+ ParseExpr(False) ;
97789776 Inc(ArgCount, 2 );
97799777 end else
97809778 begin
97819779 Emit([Pointer(opPushConst), I]);
9782- ParseExpr;
9780+ ParseExpr(False) ;
97839781 Inc(ArgCount, 2 );
97849782 Inc(I);
97859783 end ;
@@ -9831,7 +9829,7 @@ procedure TEvilC.Parse;
98319829 tkSquareBracketOpen:
98329830 begin
98339831 NextToken;
9834- ParseExpr;
9832+ ParseExpr(False) ;
98359833 NextTokenExpected([tkSquareBracketClose]);
98369834 AssignReturnFuncRef;
98379835 Emit([Pointer(opPushArrayPop), SENull]);
@@ -9888,7 +9886,7 @@ procedure TEvilC.Parse;
98889886 tkSquareBracketOpen:
98899887 begin
98909888 NextToken;
9891- ParseExpr;
9889+ ParseExpr(False) ;
98929890 NextTokenExpected([tkSquareBracketClose]);
98939891 end ;
98949892 tkDot:
@@ -9918,11 +9916,11 @@ procedure TEvilC.Parse;
99189916 Self.TokenList.Insert(J, Self.TokenList[I]);
99199917 Inc(J);
99209918 end ;
9921- Ident^.PossibleKinds := Ident^.PossibleKinds + ParseExpr;
9919+ Ident^.PossibleKinds := Ident^.PossibleKinds + ParseExpr(False) ;
99229920 end else
99239921 EmitPushVar(Ident^);
99249922 end ;
9925- Ident^.PossibleKinds := Ident^.PossibleKinds + ParseExpr;
9923+ Ident^.PossibleKinds := Ident^.PossibleKinds + ParseExpr(False) ;
99269924 if Token.Kind = tkOpAssign then
99279925 begin
99289926 case Token.Value of
@@ -9997,7 +9995,7 @@ procedure TEvilC.Parse;
99979995
99989996 procedure ParseThrow ;
99999997 begin
10000- ParseExpr;
9998+ ParseExpr(False) ;
100019999 Emit([Pointer(opThrow)]);
1000210000 end ;
1000310001
0 commit comments