ftp.nice.ch/peanuts/GeneralData/Documents/adobe/DPS.Purple.Scroll.tar.gz#/NX_Scroll/iparser.c

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

/*
 * (a)  (C) 1990 by Adobe Systems Incorporated. All rights reserved.
 *
 * (b)  If this Sample Code is distributed as part of the Display PostScript
 *	System Software Development Kit from Adobe Systems Incorporated,
 *	then this copy is designated as Development Software and its use is
 *	subject to the terms of the License Agreement attached to such Kit.
 *
 * (c)  If this Sample Code is distributed independently, then the following
 *	terms apply:
 *
 * (d)  This file may be freely copied and redistributed as long as:
 *	1) Parts (a), (d), (e) and (f) continue to be included in the file,
 *	2) If the file has been modified in any way, a notice of such
 *      modification is conspicuously indicated.
 *
 * (e)  PostScript, Display PostScript, and Adobe are registered trademarks of
 *	Adobe Systems Incorporated.
 * 
 * (f) THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO
 *	CHANGE WITHOUT NOTICE, AND SHOULD NOT BE CONSTRUED
 *	AS A COMMITMENT BY ADOBE SYSTEMS INCORPORATED.
 *	ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY
 *	OR LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO
 *	WARRANTY OF ANY KIND (EXPRESS, IMPLIED OR STATUTORY)
 *	WITH RESPECT TO THIS INFORMATION, AND EXPRESSLY
 *	DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY, 
 *	FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT
 *	OF THIRD PARTY RIGHTS.
 */

/*
 *	iparser.c
 *
 *
 *	Version:	2.0
 *	Author:	Ken Anderson, Ken Fromm
 *	History:
 *			03-07-91		Added this comment.
 */

#import "iinterpreter.h"
#import "iparserhooks.h"
#import "ierror.h"
#import <objc/objc.h>
#import <streams/streams.h>

extern int 		yylex();

static char		*idp;

typedef  void (*VoidProc) ();

#define  NUM_PROCS	42
VoidProc procs[128] = {
/* 0 */ 	i_int, i_real,  i_string, i_literal, i_name, i_array, i_f, i_s,
/* 8 */	i_clip, i_T, i_A, i_W, i_AW, i_m, i_lineto, i_L,
/* 16 */	i_r, i_R, i_l, i_x, i_y, i_X, i_Y, i_c,
/* 24 */	i_cp, i_w, i_g, i_j, i_d, i_miter, i_cap, i_RGB,
/* 32 */	i_F, i_FF, i_DF, i_MF, i_IMASK, i_IMAGE, i_BPAGE, i_EPAGE,
/* 40 */	i_REMAP, i_RECODE
};


char igetc()
{
	return *idp++;
}

/*
 *	Initializes the parsing interpreter and begins the process.
 */
BOOL iparse(char **dataptr)
{	
	BOOL 	error = NO, skip = YES, done = NO;

	int		token;
	
	idp = *dataptr;
	iinitialize();

	while (*idp != 0  && !done)
	{
		if (*idp == '\n')
			idp++;
		else if (!strncmp(idp, "%%", 2))
		{
			idp += 2;
			if (!strncmp(idp, "Trailer", 7))
				done = YES;
			else if (!strncmp(idp, "EndPageSetup", 12))
				skip = NO;
			else if (!strncmp(idp, "PageTrailer", 11))
				skip = YES;

			idp = strchr(idp,'\n'); idp++;
		}
		else if (skip)
		{
			idp = strchr(idp,'\n'); idp++;
		}
		else
		{
			token = yylex();
			while (token && !error)
			{
				if (token <= NUM_PROCS)
				{
					(*procs[token-1]) ();
					error = iiferror();
				}
				else
					ierrorlog("Unrecognized token", &error);

				if (!error)
					token = yylex();
				else
					ierrordisplay(token);
			}
		}
	}
	
	*dataptr = idp;

	return error;
}


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