ftp.nice.ch/pub/next/developer/languages/translator/p2c.1.19.s.tar.gz#/examples/c/self.c

This is self.c in view mode; [Download] [Up]

/* Output from p2c, the Pascal-to-C translator */
/* From input file "dist/examples/self.p" */


#include <p2c/p2c.h>


typedef Char s[256];

typedef long n;


Static s a[100];
Static long i, j;


Static long t(a)
long a;
{
  if (a < 7)
    return a;
  else
    return (a + 11);
}


Static Char *q(Result, a_)
Char *Result, *a_;
{
  s a;
  n j;
  Char STR1[256];

  strcpy(a, a_);
  for (j = strlen(a) - 1; j >= 0; j--) {
    if (a[j] == '\'') {
      sprintf(STR1, "'%s", a + j);
      strcpy(a + j, STR1);
    }
  }
  return strcpy(Result, a);
}


main(argc, argv)
int argc;
Char *argv[];
{
  Char STR2[256];

  PASCAL_MAIN(argc, argv);
  strcpy(a[0], "program self(input, output);");
  strcpy(a[1], "type s = string[255]; n=integer;");
  strcpy(a[2], "var a : array [1..100] of s; i,j : integer;");
  strcpy(a[3],
    "function t(a:integer):integer; begin if a<7 then t:=a else t:=a+11 end; function q(a:s):s;");
  strcpy(a[4],
    " var j:n;begin for j:=strlen(a)downto 1 do if a[j]=#39 then strinsert(#39,a,j);q:=a;end;");
  strcpy(a[5], "begin");
  strcpy(a[17], "   for i := 1 to 11 do begin setstrlen(a[i+6], 0);");
  strcpy(a[18],
    "      strwrite(a[i+6],1,j,'   a[',t(i):1,'] := ''', q(a[t(i)]), ''';');");
  strcpy(a[19], "   end;");
  strcpy(a[20], "   for i := 1 to 22 do writeln(a[i]);");
  strcpy(a[21], "end.");
  for (i = 1; i <= 11; i++) {
    sprintf(a[i + 5], "   a[%ld] := '%s';", t(i), q(STR2, a[t(i) - 1]));
    j = strlen(a[i + 5]) + 1;
  }
  for (i = 1; i <= 22; i++)
    puts(a[i - 1]);
  exit(EXIT_SUCCESS);
}



/* End. */

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.