bug00141.pp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. type
  2. ttreetype = (addn,muln,subn,divn,
  3. modn,assignn,loadn,rangen,
  4. ltn,lten,gtn,gten,
  5. equaln,unequaln,inn,orn,
  6. xorn,shrn,shln,slashn,
  7. andn,subscriptn,derefn,addrn,
  8. ordconstn,typeconvn,calln,callparan,
  9. realconstn,fixconstn,umminusn,asmn,vecn,
  10. stringconstn,funcretn,selfn,
  11. notn,inlinen,niln,errorn,
  12. typen,hnewn,hdisposen,newn,
  13. simpledisposen,setelen,setconstrn,blockn,
  14. anwein,loopn,ifn,breakn,
  15. continuen,repeatn,whilen,forn,
  16. exitn,withn,casen,labeln,
  17. goton,simplenewn,tryexceptn,raisen,
  18. switchesn,tryfinallyn,isn,asn);
  19. { gibt an, welche Nachfolger eines Knotens }
  20. ptree = ^ttree;
  21. ttree = record
  22. left,right : ptree;
  23. treetype : ttreetype;
  24. end;
  25. function equal_trees(t1,t2 : ptree) : boolean;
  26. begin
  27. case t1^.treetype of
  28. realconstn,fixconstn,umminusn,asmn,vecn,
  29. stringconstn,funcretn,selfn,
  30. equaln,
  31. unequaln:
  32. begin
  33. equal_trees:=(equal_trees(t1^.left,t2^.left) and
  34. equal_trees(t1^.right,t2^.right)) or
  35. (equal_trees(t1^.right,t2^.left) and
  36. equal_trees(t1^.left,t2^.right));
  37. end;
  38. end;
  39. end;