Pointer Operations

Pointer operations are similar to Integer operations. However, only extended Turbo Pascal syntax allows pointer operations other than equality check.
  Procedure CheckPointerOperations;
  begin
    Case Operation of
      Calc_IsEqual,
      Calc_IsNotEqual: Exit;
      else begin
             If not (ExtendedSyntax in ModuleCompilerSwitches) then Error (OperandTypesDoNotMatchOperator);
             If LeftExpression.TypeDefPtr <> Ptr (SystemUnitSegment, PChar_TypeOffset) then
               Error (OperandTypesDoNotMatchOperator);
             If Operation = Calc_Subtract then LeftExpression.TypeDefPtr := Ptr (SystemUnitSegment, LongInt_TypeOffset);
             LeftExpression.DataType := itWord;
             RightExpression.DataType := itWord;
           end;
    end;
  end;
  Procedure ConstantPointerOperations;
  begin
    CheckPointerOperations;
    ConstantIntegerOperations;
  end;
  Procedure GenerateCodeForPointerOperations;
  begin
    CheckPointerOperations;
    GenerateCodeForIntegerOperations;
  end;
 
 
 
© 2017 Turbo Pascal | Privacy Policy