Article View: gnu.gcc.help
Article #909Re: Making a C to PostScript compiler with GCC
From: Skip Montanaro
Date: Thu, 28 Jan 1993 14:50
Date: Thu, 28 Jan 1993 14:50
128 lines
4001 bytes
4001 bytes
In article <9301262119.AA29680@osnome.che.wisc.edu> epperly@osnome.che.wisc.edu (Tom Epperly) writes:
I was wondering how difficult it would be to make a C to PostScript
compiler with GCC. Could this be done by writing a GCC machine
description file for the PostScript language? Can someone describe if
this is feasible and how difficult it would be?
There is something already available from the Turing Institute. Here's the
announcement.
----------
From: Arthur van Hoff <arthur@turing-institute.ac.uk>
To: pdb-list@turing-institute.ac.uk
Subject: PDB -- ANSI-C to PostScript compiler
Date: Wed, 20 Jan 93 12:19:36 GMT
Hi HyperLook and HyperNeWS Hackers,
PdB version 2.1 (ANSI-C to PostScript compiler) is now available
via anonymous ftp from:
turing.com (192.133.90.28) pub/pdb2.1-demo.tar.Z.
There is no more need to write PostScript! Start using PdB right now!
PdB is an optimizing compiler to compile ANSI-C (like) code into Adobe
compatible PostScript. The release of version 2.1 includes:
- Binaries for Sun SPARC station and IBM RS6000.
- Include files for Abobe PostScript level I.
- Include files for NeWS upto version 3.1.
- Include files for TNT upto version 3.1.
- Support for CPS OpenWindows upto version 3.1.
- Support NeWS classing in a C++ manner.
- Plenty of examples of all the above functions.
- NeWS/OpenWindows test suite.
- PostScript reference manual.
- UNIX manual pages.
Below are some examples of PdB code together with the PostScript
produced by the compiler.
Have fun,
Arthur van Hoff
pdb@turing.com
################################
Code to draw a star shape in PdB
################################
#include <graphics.h>
void starpath(int ang)
{
int i;
newpath();
moveto(100,100);
for (i = 1 ; i <= (int)(360 / ang) ; i++) {
rotate(180 + ang);
rlineto(100,0);
}
setgray(0);
stroke();
}
########################
Verbatim Compiler output
########################
/starpath {
% int --
newpath 100 100 moveto 1 360 2 index div cvi exch sub 1 add 0 max {
dup 180 add rotate 100 0 rlineto
} repeat
pop 0 setgray stroke
} def
###########################
Code for bubble-sort in PdB
###########################
#include <postscript.h>
/******************************************************
* Bubble sort (page 66)
* From: Algorithms + Data Structures = Programs
* Nicklaus Wirth
*/
void bubblesort(int *a)
{
int i, j;
for (i = length(a)-1 ; i > 1 ; i--)
for (j = 0 ; j < i ; j++)
if (a[j] > a[j+1]) {
int x = a[j+1];
a[j+1] = a[j];
a[j] = x;
}
}
########################
Verbatim Compiler output
########################
/bubblesort {
% int * --
dup length 1 sub -1 2 {
0 1 3 -1 roll 1 sub {
2 copy get 2 index 2 index 1 add get gt {
2 copy 1 add get 2 index 2 index 1 add 4 index 4 index get put
2 index 3 1 roll put
} {pop} ifelse
} for
} for
pop
} def
----------
--
Skip (montanaro@crd.ge.com)
Technical Details
Message-ID:
<MONTNARO.93Jan28095014@spyder.crd.ge.com>Path:
arc1-ca.pugleaf.net!sparky!uunet!ferkel.ucsb.edu!taco!rock!stanford.edu!ames!saimiri.primate.wisc.edu!zaphod.mps.ohio-state.edu!rpi!crdgw1!rdsunx.crd.ge.com!rdsunx!montnaroReferences:
<9301262119.AA29680@osnome.che.wisc.edu>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!sparky!uunet!ferkel.ucsb.edu!taco!rock!stanford.edu!ames!saimiri.primate.wisc.edu!zaphod.mps.ohio-state.edu!rpi!crdgw1!rdsunx.crd.ge.com!rdsunx!montnaro From: montnaro@spyder.crd.ge.com (Skip Montanaro) Newsgroups: gnu.gcc.help Subject: Re: Making a C to PostScript compiler with GCC Message-ID: <MONTNARO.93Jan28095014@spyder.crd.ge.com> Date: 28 Jan 93 14:50:14 GMT References: <9301262119.AA29680@osnome.che.wisc.edu> Sender: usenet@crd.ge.com (Required for NNTP) Reply-To: montanaro@ausable.crd.ge.com (Skip Montanaro) Distribution: gnu Organization: GE Corporate Research & Development, Schenectady, NY Lines: 128 In-Reply-To: epperly@osnome.che.wisc.edu's message of 26 Jan 1993 16:33:08 -0500 Nntp-Posting-Host: spyder.crd.ge.com