t42_multidecl.pas 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. program t42;
  2. (* Multi-name declarations, in both spellings TP3 accepts.
  3. TP3's grammar (TPSRC7) collects a comma-separated list of NAMES, then reads
  4. ONE `: type' for the whole list (rdvarlst/rdvloop for VAR, prfcnt/ccomma for
  5. parameters), and separates parameter groups with ';'. So all three of
  6. var a, b, c : integer ; (names joined by ',')
  7. procedure p (x, y : integer) (names joined by ',')
  8. procedure q (x : integer ; y : integer) (groups joined by ';')
  9. are legal, and this fixture uses each. The older `name : type, name : type'
  10. spelling is exercised too, so it keeps working. Every variable and every
  11. parameter must still land on the same slot layout as if written one per
  12. line, which is what the printed values check. *)
  13. var
  14. a, b, c : integer ;
  15. d : integer ;
  16. procedure add3 (x, y, z : integer) ;
  17. begin
  18. d := x + y + z
  19. end ;
  20. procedure add2 (p : integer, q : integer) ;
  21. begin
  22. d := d + p + q
  23. end ;
  24. procedure mix (u, v : integer ; w : integer) ;
  25. begin
  26. d := u * 100 + v * 10 + w
  27. end ;
  28. begin
  29. a := 1 ;
  30. b := 2 ;
  31. c := 3 ;
  32. add3 (a, b, c) ;
  33. writeln (d) ;
  34. d := 0 ;
  35. add2 (4, 5) ;
  36. writeln (d) ;
  37. writeln (a, ' ', b, ' ', c) ;
  38. mix (1, 2, 3) ;
  39. writeln (d)
  40. end.