⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p2c.h

📁 把pascal程序转成C语言程序 把pascal程序转成C语言程序
💻 H
字号:
#ifndef P2C_H#define P2C_H/* Header file for code generated by "p2c", the Pascal-to-C translator *//* "p2c"  Copyright (C) 1989, 1990, 1991, 1992, 1993 Free Software Foundation. * By Dave Gillespie, daveg@synaptics.com.  Version 1.21alpha-07.Dec.93. * This file may be copied, modified, etc. in any way.  It is not restricted * by the licence agreement accompanying p2c itself. */#include <stdio.h>/* If the following heuristic fails, compile -DBSD=0 for non-BSD systems,   or -DBSD=1 for BSD systems. */#ifdef M_XENIX# define BSD 0#endif#ifdef vms# define BSD 0# ifndef __STDC__#  define __STDC__ 1# endif#endif#ifdef __TURBOC__# define MSDOS 1#endif#ifdef MSDOS# define BSD 0#endif#ifdef FILE       /* a #define in BSD, a typedef in SYSV (hp-ux, at least) */# ifndef BSD	  /*  (a convenient, but horrible kludge!) */#  define BSD 1# endif#endif#ifdef BSD# if !BSD#  undef BSD# endif#endif#if (defined(__STDC__) && !defined(M_XENIX)) || defined(__TURBOC__)# include <stdlib.h># include <stddef.h># define HAS_STDLIB# if defined(vms) || defined(__TURBOC__)#  define NON_ANSI_CAT# endif#else# ifndef BSD#  ifndef __TURBOC__#   include <memory.h>#  endif# endif# ifdef hpux#  ifdef _INCLUDE__STDC__#   include <stddef.h>#   include <stdlib.h>#   define HAS_STDLIB#  endif# endif# include <sys/types.h># if !defined(MSDOS) || defined(__TURBOC__)#  define NON_ANSI_CAT# endif#endif#if defined(NON_ANSI_CAT) && !defined(ANSI_CAT)# ifdef NON_ANSI_CAT_ALTERNATE#  define __CAT__(a,b)a/**/b# else#  define __ID__(a)a#  define __CAT__(a,b)__ID__(a)b# endif#else# define __CAT__(a,b)a##b#endif#ifdef BSD# include <strings.h># define memcpy(a,b,n) (bcopy(b,a,n),a)# define memcmp(a,b,n) bcmp(a,b,n)# define strchr(s,c) index(s,c)# define strrchr(s,c) rindex(s,c)#else# include <string.h>#endif#include <ctype.h>#include <math.h>#include <setjmp.h>#include <assert.h>#ifndef NO_LACK#ifdef vms#define LACK_LABS#define LACK_MEMMOVE#define LACK_MEMCPY#else#define LACK_LABS       /* Undefine these if your library has these */#define LACK_MEMMOVE#endif#endiftypedef struct __p2c_jmp_buf {    struct __p2c_jmp_buf *next;    jmp_buf jbuf;} __p2c_jmp_buf;/* Warning: The following will not work if setjmp is used simultaneously.   This also violates the ANSI restriction about using vars after longjmp,   but a typical implementation of longjmp will get it right anyway. */#ifndef FAKE_TRY# define TRY(x)         do { __p2c_jmp_buf __try_jb;  \			     __try_jb.next = __top_jb;  \			     if (!setjmp((__top_jb = &__try_jb)->jbuf)) {# define RECOVER(x)	__top_jb = __try_jb.next; } else {# define RECOVER2(x,L)  __top_jb = __try_jb.next; } else {  \			     if (0) { L: __top_jb = __try_jb.next; }# define ENDTRY(x)      } } while (0) #else# define TRY(x)         if (1) {# define RECOVER(x)     } else do {# define RECOVER2(x,L)  } else do { L: ;# define ENDTRY(x)      } while (0)#endif#ifdef M_XENIX  /* avoid compiler bug */# define SHORT_MAX  (32767)# define SHORT_MIN  (-32768)#endif/* The following definitions work only on twos-complement machines */#ifndef SHORT_MAX# define SHORT_MAX  ((short)(((unsigned short) -1) >> 1))# define SHORT_MIN  (~SHORT_MAX)#endif#ifndef INT_MAX# define INT_MAX    ((int)(((unsigned int) -1) >> 1))# define INT_MIN    (~INT_MAX)#endif#ifndef LONG_MAX# define LONG_MAX   ((long)(((unsigned long) -1) >> 1))# define LONG_MIN   (~LONG_MAX)#endif#ifndef SEEK_SET# define SEEK_SET   0# define SEEK_CUR   1# define SEEK_END   2#endif#ifndef EXIT_SUCCESS# ifdef vms#  define EXIT_SUCCESS  1#  define EXIT_FAILURE  (02000000000L)# else#  define EXIT_SUCCESS  0#  define EXIT_FAILURE  1# endif#endif#define SETBITS  32#if defined(__STDC__) || defined(__TURBOC__)# if !defined(vms) && !defined(M_LINT)#  define Signed    signed# else#  define Signed# endif# define Void       void      /* Void f() = procedure */# ifndef Const#  define Const     const# endif# ifndef Volatile# define Volatile   volatile# endif# ifdef M_LINT#  define PP(x)     ()#  define PV()	    ()typedef char *Anyptr;# else#  define PP(x)     x         /* function prototype */#  define PV()      (void)    /* null function prototype */typedef void *Anyptr;# endif#else# define Signed# define Void       void# ifndef Const#  define Const# endif# ifndef Volatile#  define Volatile# endif# define PP(x)      ()# define PV()       ()typedef char *Anyptr;#endif#ifdef __GNUC__# define Inline     inline#else# define Inline#endif#define Register    register  /* Register variables */#define Char        char      /* Characters (not bytes) */#ifndef Static# define Static     static    /* Private global funcs and vars */#endif#ifndef Local# define Local      static    /* Nested functions */#endiftypedef Signed   char schar;typedef unsigned char uchar;typedef unsigned char boolean;#ifndef NO_DECLARE_ALFAtypedef Char alfa[10];#endif#ifndef true# define true    1# define false   0#endif#ifndef TRUE# define TRUE    1# define FALSE   0#endiftypedef struct {    Anyptr proc, link;} _PROCEDURE;#ifndef _FNSIZE# define _FNSIZE  120#endifextern Void    PASCAL_MAIN  PP( (int, Char **) );extern Char    **P_argv;extern int     P_argc;extern short   P_escapecode;extern int     P_ioresult;extern __p2c_jmp_buf *__top_jb;#ifdef P2C_H_PROTO   /* if you have Ansi C but non-prototyped header files */extern Char    *strcat      PP( (Char *, Const Char *) );extern Char    *strchr      PP( (Const Char *, int) );extern int      strcmp      PP( (Const Char *, Const Char *) );extern Char    *strcpy      PP( (Char *, Const Char *) );extern size_t   strlen      PP( (Const Char *) );extern Char    *strncat     PP( (Char *, Const Char *, size_t) );extern int      strncmp     PP( (Const Char *, Const Char *, size_t) );extern Char    *strncpy     PP( (Char *, Const Char *, size_t) );extern Char    *strrchr     PP( (Const Char *, int) );extern Anyptr   memchr      PP( (Const Anyptr, int, size_t) );extern Anyptr   memmove     PP( (Anyptr, Const Anyptr, size_t) );extern Anyptr   memset      PP( (Anyptr, int, size_t) );#ifndef memcpyextern Anyptr   memcpy      PP( (Anyptr, Const Anyptr, size_t) );extern int      memcmp      PP( (Const Anyptr, Const Anyptr, size_t) );#endifextern int      atoi        PP( (Const Char *) );extern double   atof        PP( (Const Char *) );extern long     atol        PP( (Const Char *) );extern double   strtod      PP( (Const Char *, Char **) );extern long     strtol      PP( (Const Char *, Char **, int) );#endif /*P2C_H_PROTO*/#ifndef HAS_STDLIB#ifndef NO_DECLARE_MALLOCextern Anyptr   malloc      PP( (size_t) );extern Void     free        PP( (Anyptr) );#endif#endifextern int      _OutMem     PV();extern int      _CaseCheck  PV();extern int      _NilCheck   PV();extern int	_Escape     PP( (int) );extern int	_EscIO      PP( (int) );extern int	_EscIO2     PP( (int, Char *) );extern long     ipow        PP( (long, long) );extern long     P_imax      PP( (long, long) );extern long     P_imin      PP( (long, long) );extern double   P_rmax      PP( (double, double) );extern double   P_rmin      PP( (double, double) );extern Char    *strsub      PP( (Char *, Char *, int, int) );extern Char    *strltrim    PP( (Char *) );extern Char    *strrtrim    PP( (Char *) );extern Char    *strrpt      PP( (Char *, Char *, int) );extern Char    *strpad      PP( (Char *, Char *, int, int) );extern int      strpos2     PP( (Char *, Char *, int) );extern long     memavail    PV();extern int      P_peek      PP( (FILE *) );extern int      P_eof       PP( (FILE *) );extern int      P_eoln      PP( (FILE *) );extern Void     P_readpaoc  PP( (FILE *, Char *, int) );extern Void     P_readlnpaoc PP( (FILE *, Char *, int) );extern long     P_maxpos    PP( (FILE *) );extern Char    *P_trimname  PP( (Char *, int) );extern long    *P_setunion  PP( (long *, long *, long *) );extern long    *P_setint    PP( (long *, long *, long *) );extern long    *P_setdiff   PP( (long *, long *, long *) );extern long    *P_setxor    PP( (long *, long *, long *) );extern int      P_inset     PP( (unsigned, long *) );extern int      P_setequal  PP( (long *, long *) );extern int      P_subset    PP( (long *, long *) );extern long    *P_addset    PP( (long *, unsigned) );extern long    *P_addsetr   PP( (long *, unsigned, unsigned) );extern long    *P_remset    PP( (long *, unsigned) );extern long    *P_setcpy    PP( (long *, long *) );extern long    *P_expset    PP( (long *, long) );extern long     P_packset   PP( (long *) );extern int      P_getcmdline PP( (int, int, Char *) );extern Void     TimeStamp   PP( (int *, int *, int *,				 int *, int *, int *) );extern Void	P_sun_argv  PP( (char *, int, int) );extern FILE    *_skipspaces PP( (FILE *) );extern FILE    *_skipnlspaces PP( (FILE *) );/* I/O error handling */#define _CHKIO(cond,ior,val,def)  ((cond) ? P_ioresult=0,(val)  \					  : P_ioresult=(ior),(def))#define _SETIO(cond,ior)          (P_ioresult = (cond) ? 0 : (ior))/* Following defines are suitable for the HP Pascal operating system */#define FileNotFound     10#define FileNotOpen      13#define FileWriteError   38#define BadInputFormat   14#define EndOfFile        30#define FILENOTFOUND     10#define FILENOTOPEN      13#define FILEWRITEERROR   38#define BADINPUTFORMAT   14#define ENDOFFILE        30/* Creating temporary files */#if (defined(BSD) || defined(NO_TMPFILE)) && !defined(HAVE_TMPFILE)# define tmpfile()  (fopen(tmpnam(NULL), "w+"))#endif/* File buffers */#define FILEBUF(f,sc,type) sc int __CAT__(f,_BFLAGS);   \			   sc type __CAT__(f,_BUFFER)#define FILEBUFNC(f,type)  int __CAT__(f,_BFLAGS);   \			   type __CAT__(f,_BUFFER)#define RESETBUF(f,type)   (__CAT__(f,_BFLAGS) = 1)#define SETUPBUF(f,type)   (__CAT__(f,_BFLAGS) = 0)#define GETFBUF(f,type)    (*((__CAT__(f,_BFLAGS) == 1 &&   \			       ((__CAT__(f,_BFLAGS) = 2),   \				fread(&__CAT__(f,_BUFFER),  \				      sizeof(type),1,(f)))),\			      &__CAT__(f,_BUFFER)))#define AGETFBUF(f,type)   ((__CAT__(f,_BFLAGS) == 1 &&   \			     ((__CAT__(f,_BFLAGS) = 2),   \			      fread(__CAT__(f,_BUFFER),  \				    sizeof(type),1,(f)))),\			    __CAT__(f,_BUFFER))#define PUTFBUF(f,type,v)  (GETFBUF(f,type) = (v))#define CPUTFBUF(f,v)      (PUTFBUF(f,char,v))#define APUTFBUF(f,type,v) (memcpy(AGETFBUF(f,type), (v),  \				   sizeof(__CAT__(f,_BUFFER))))#define GET(f,type)        (__CAT__(f,_BFLAGS) == 1 ?   \			    fread(&__CAT__(f,_BUFFER),sizeof(type),1,(f)) :  \			    (__CAT__(f,_BFLAGS) = 1))#define PUT(f,type)        (fwrite(&__CAT__(f,_BUFFER),sizeof(type),1,(f)),  \			    (__CAT__(f,_BFLAGS) = 0))#define CPUT(f)            (PUT(f,char))#define BUFEOF(f)	   (__CAT__(f,_BFLAGS) != 2 && P_eof(f))#define BUFFPOS(f)	   (ftell(f) - (__CAT__(f,_BFLAGS) == 2))typedef struct {    FILE *f;    int f_BFLAGS;    /* FILEBUFNC(f,Char); */    Char f_BUFFER;    Char name[_FNSIZE];} _TEXT;/* Memory allocation */#ifdef __GCC__# define Malloc(n)  (malloc(n) ?: (Anyptr)_OutMem())#elseextern Anyptr __MallocTemp__;# define Malloc(n)  ((__MallocTemp__ = malloc(n)) ? __MallocTemp__ : (Anyptr)_OutMem())#endif#define FreeR(p)    (free((Anyptr)(p)))    /* used if arg is an rvalue */#define Free(p)     (free((Anyptr)(p)), (p)=NULL)/* sign extension */#define SEXT(x,n)   ((x) | -(((x) & (1L<<((n)-1))) << 1))/* packed arrays */   /* BEWARE: these are untested! */#define P_getbits_UB(a,i,n,L)   ((int)((a)[(i)>>(L)-(n)] >>   \				       (((~(i))&((1<<(L)-(n))-1)) << (n)) &  \				       (1<<(1<<(n)))-1))#define P_getbits_SB(a,i,n,L)   ((int)((a)[(i)>>(L)-(n)] <<   \				       (16 - ((((~(i))&((1<<(L)-(n))-1))+1) <<\					      (n)) >> (16-(1<<(n))))))#define P_putbits_UB(a,i,x,n,L) ((a)[(i)>>(L)-(n)] |=   \				 (x) << (((~(i))&((1<<(L)-(n))-1)) << (n)))#define P_putbits_SB(a,i,x,n,L) ((a)[(i)>>(L)-(n)] |=   \				 ((x) & (1<<(1<<(n)))-1) <<   \				 (((~(i))&((1<<(L)-(n))-1)) << (n)))#define P_clrbits_B(a,i,n,L)    ((a)[(i)>>(L)-(n)] &=   \				 ~( ((1<<(1<<(n)))-1) <<   \				   (((~(i))&((1<<(L)-(n))-1)) << (n))) )/* small packed arrays */#define P_getbits_US(v,i,n)     ((int)((v) >> ((i)<<(n)) & (1<<(1<<(n)))-1))#define P_getbits_SS(v,i,n)     ((int)((long)(v) << (SETBITS - (((i)+1) << (n))) >> (SETBITS-(1<<(n)))))#define P_putbits_US(v,i,x,n)   ((v) |= (x) << ((i) << (n)))#define P_putbits_SS(v,i,x,n)   ((v) |= ((x) & (1<<(1<<(n)))-1) << ((i)<<(n)))#define P_clrbits_S(v,i,n)      ((v) &= ~( ((1<<(1<<(n)))-1) << ((i)<<(n)) ))#define P_max(a,b)   ((a) > (b) ? (a) : (b))#define P_min(a,b)   ((a) < (b) ? (a) : (b))/* Fix ANSI-isms */#ifdef LACK_LABS# ifndef labs#  define labs  my_labs   extern long my_labs PP( (long) );# endif#endif#ifdef LACK_MEMMOVE# ifndef memmove#  define memmove  my_memmove   extern Anyptr my_memmove PP( (Anyptr, Const Anyptr, size_t) );# endif#endif#ifdef LACK_MEMCPY# ifndef memcpy#  define memcpy  my_memcpy   extern Anyptr my_memcpy PP( (Anyptr, Const Anyptr, size_t) );# endif# ifndef memcmp#  define memcmp  my_memcmp   extern int my_memcmp PP( (Const Anyptr, Const Anyptr, size_t) );# endif# ifndef memset#  define memset  my_memset   extern Anyptr my_memset PP( (Anyptr, int, size_t) );# endif#endif/* Fix toupper/tolower on Suns and other stupid BSD systems */#ifdef toupper# undef toupper# undef tolower# define toupper(c)   my_toupper(c)# define tolower(c)   my_tolower(c)#endif#ifndef _toupper# if 'A' == 65 && 'a' == 97#  define _toupper(c)  ((c)-'a'+'A')#  define _tolower(c)  ((c)-'A'+'a')# else#  ifdef toupper#   undef toupper   /* hope these are shadowing real functions, */#   undef tolower   /* because my_toupper calls _toupper! */#  endif#  define _toupper(c)  toupper(c)#  define _tolower(c)  tolower(c)# endif#endif#endif    /* P2C_H *//* End. */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -