CC.P
上传用户:hlzzc88
上传日期:2007-01-06
资源大小:220k
文件大小:13k
源码类别:

编译器/解释器

开发平台:

Others

  1. /* Protogen Version 1.00 Saturday May 31, 1997  17:24:41 */
  2.                               /* Analyze.c */
  3. int equalnode(ENODE *node1, ENODE *node2);
  4. CSE *searchnode(ENODE *node);
  5. ENODE *copynode(ENODE *node);
  6. CSE *enternode(ENODE *node,int duse,int size);
  7. CSE *voidauto(ENODE *node);
  8. void voidall(void);
  9. void scanexpr(ENODE *node, int duse,int size);
  10. void scan(SNODE *block);
  11. void exchange(CSE **c1);
  12. int     desire(CSE *csp);
  13. int     bsort(CSE **list);
  14. void repexpr(ENODE *node, int size);
  15. void repcse(SNODE *block);
  16. void allocstack(void);
  17. void opt1(SNODE *block);
  18.                                /* Cmain.c */
  19. void bool_setup(char select, char *string); /* PROTOTYPE */
  20. void err_setup(char select, char *string); /* PROTOTYPE */
  21. void incl_setup(char select, char *string); /* PROTOTYPE */
  22. void def_setup(char select, char *string); /* PROTOTYPE */
  23. void codegen_setup(char select, char *string); /* PROTOTYPE */
  24. void optimize_setup(char select, char *string); /* PROTOTYPE */
  25. void warning_setup(char select, char *string); /* PROTOTYPE */
  26. void parsefile(char select, char *string); /* PROTOTYPE */
  27. void bool_setup(char select, char *string);
  28. void codegen_setup(char select, char *string);
  29. void optimize_setup(char select, char *string);
  30. void err_setup(char select, char *string);
  31. void incl_setup(char select, char * string);
  32. void def_setup(char select, char *string);
  33. void setglbdefs(void);
  34. void InsertAnyFile(FILE *inf, FILE *outf, char *filename, char *path, int drive);
  35. void dumperrs(FILE *file); /* PROTOTYPE */
  36. void setfile(char *buf,char *orgbuf,char *ext);
  37. int parse_arbitrary(char *string);
  38. void parsefile(char select, char *string);
  39. void addinclude(void);
  40. int parseenv(char *name);
  41. void dumperrs(FILE *file);
  42. void summary(void);
  43. void ctrlchandler(int aa);
  44. int main(int argc,char *argv[]);
  45.                                /* Decl.c */
  46. void declini(void);
  47. int     imax(int i,int j);
  48. char    *litlate(char *s);
  49. TYP     *maketype(int bt,int siz);
  50. TYP *cponetype(TYP *t);
  51. TYP *copytype(TYP *itp, int flags);
  52. void     decl(TABLE *table);
  53. void decl1(void);
  54. void decl2(void);
  55. void decl3(void);
  56. int bitsize(int type);
  57. int oksize(void);
  58. int     basedeclare(TABLE *table,int al,long ilc,int ztype, int flags);
  59. int     declare(TABLE *table,int al,int ztype, int flags);
  60. int     declare2(TABLE *table,int al,int ztype, int flags, long val);
  61. int     declbegin(int st);
  62. void declenum(TABLE *table);
  63. void enumbody(TABLE *table);
  64. void declstruct(TABLE *table, int ztype, int flags);
  65. void structbody(TYP *tp,char  *name,int ztype);
  66. void check_used(void);
  67. void compile(void);
  68. void dodecl(int defclass);
  69. void doargdecl(int defclass, char *names[], int *nparms, TABLE *table, int isinline);
  70.                                /* Error.c */
  71. void initerr(void);
  72. void warning_setup(char select, char *string);
  73. void diag(char *s);
  74. int printerr(char *buf, ERRORS *err);
  75. void     lferror(void);
  76. void basicskim(int *skimlist);
  77. BALANCE *newbalance(BALANCE *bal);
  78. void setbalance(BALANCE **bal);
  79. void expskim(int *skimlist);
  80. void basicerror(int n, void *data);
  81. void Error(char *string);
  82. void generror(int n, int data, int *skimlist);
  83. void gensymerror(int n, char *data);
  84. void genfuncerror(int n, char*func, char *data);
  85. void genfunc2error(int n, char*func, char *func2);
  86. void genclasserror(int n, char *struc, char *elem);
  87. void genmismatcherror(TYP *tp1, TYP *tp2);
  88. void expecttoken(int n, int *skimlist);
  89. void generrorexp(int n, int data, int *skimlist);
  90. void gensymerrorexp(int n, char *data);
  91. void expecttokenexp(int n, int *skimlist);
  92. /* Protogen Version 1.00 Saturday May 31, 1997  17:24:41 */
  93.                                /* Expr.c */
  94. void exprini(void);
  95. ENODE    *makenode(enum e_node nt, char *v1, char *v2);
  96. TYP *deref(ENODE **node, TYP *tp);
  97. ENODE *dummyvar(int size, TYP *type);
  98. int isintconst(int type);
  99. TYP     *nameref(ENODE **node);
  100. void promote_type(TYP *typ, ENODE **node);
  101. TYP *gatherparms( ENODE **node);
  102. void checkparmconst(TYP *tp, TYP *tpi);
  103. void parmlist(ENODE **node, TYP *tpi, TYP *tp);
  104. int floatrecurse(ENODE *node);
  105. void floatcheck(ENODE *node);
  106. int     castbegin(int st);
  107. int tostring(void);
  108. TYP     *primary(ENODE **node);
  109. int castvalue(ENODE *node);
  110. int     lvalue(ENODE *node);
  111. TYP     *unary(ENODE **node);
  112. TYP *maxsize(TYP *tp1, TYP *tp2);
  113. TYP     *forcefit(ENODE **node1,TYP *tp1,ENODE **node2,TYP *tp2, int max, int allowpointers);
  114. int     isscalar(TYP *tp);
  115. void checknp(TYP *tp1,TYP*tp2,ENODE *ep1, ENODE *ep2);
  116. TYP     *multops(ENODE **node);
  117. TYP     *addops(ENODE **node);
  118. TYP     *shiftop(ENODE **node);
  119. TYP     *relation(ENODE **node);
  120. TYP     *equalops(ENODE **node);
  121. TYP     *binop(ENODE **node,TYP *(*xfunc)(),int nt,int sy);
  122. TYP     *bitand(ENODE **node);
  123. TYP     *bitxor(ENODE **node);
  124. TYP     *bitor(ENODE **node);
  125. TYP     *andop(ENODE **node);
  126. TYP     *orop(ENODE **node);
  127. TYP     *conditional(ENODE **node);
  128. TYP *autoasnop(ENODE **node, SYM *sp);
  129. void asncombine(ENODE **node);
  130. TYP     *asnop(ENODE **node,TYP *tptr);
  131. TYP     *exprnc(ENODE **node);
  132. TYP     *commaop(ENODE **node);
  133. TYP     *expression(ENODE **node);
  134.                              /* Floatexp.c */
  135. long double floatexpr(void); /* PROTOTYPE */
  136. long double feprimary(void)   ;                                   /* STATIC */
  137. long double feunary(void);                                        /* STATIC */
  138. long double femultops(void);                                      /* STATIC */
  139. long double feaddops(void);                                       /* STATIC */
  140. long double floatexpr(void);
  141.                                /* Func.c */
  142. void funcini(void);
  143. void declfuncarg(int isint);
  144. void check_funcused(TABLE *oldlsym, TABLE *lsyms);
  145. void funcbody(SYM *sp);
  146. SYM     *makeint(char *name, TABLE *table);
  147. void addblocklist(SYM *sp);
  148. void block(void);
  149. void gather_labels(TABLE *oldlsym, TABLE *lsyms);
  150. SNODE *compoundblock(void);
  151.                               /* Mangle.c */
  152. void funcrefinsert(char *name, char *mangname, TYP *tp, TABLE *tbl);
  153. int fomatch(TYP *tp1, TYP *tp2);                                  /* STATIC */
  154. SYM *funcovermatch(char *name,TYP *tp);
  155. char *cpponearg(char *buf,TYP *tp);                               /* STATIC */
  156. char *cppargs(char *buf,SYM *sp);                                 /* STATIC */
  157. char * cppmangle(char *name, TYP *tp);
  158. char * putptr(char *buf, int *ptr, int **ptrs);
  159. char *unmang1(char *buf, char *name, int *ptr, int **ptrs);       /* STATIC */
  160. char * unmangcppfunc(char *buf, char *name);                      /* STATIC */
  161. void unmangle(char *buf, char *name);
  162. /* Protogen Version 1.00 Saturday May 31, 1997  17:24:42 */
  163.                               /* Getsym.c */
  164. void initsym(void);
  165. void lineToCpp(void);
  166. void stripcomment (short *line);                                  /* STATIC */
  167. void striptrigraph(short *buf);
  168. int     getline(int listflag);
  169. int     getch(void);
  170. void     getid(void);
  171. int     getsch(void)        ;
  172. int     radix36(char c);
  173. void getbase(int b,char **ptr);
  174. void getfrac(char **ptr);
  175. void getexp(char **ptr);
  176. void getnum(void);
  177. int getsym2(void) ;
  178. void     getsym(void);
  179. int needpunc(enum e_sym p, int *skimlist);
  180. int needpuncexp(enum e_sym p, int *skimlist);
  181. void backup(int st);
  182.                                /* Init.c */
  183. void initini(void);
  184. void initrundown(void);
  185. long gen(SYM *sp);                                                /* STATIC */
  186. void cppinitinsert(ENODE *node);
  187. void doinit(SYM *sp);
  188. int     inittype(TYP *tp);
  189. int initarray(TYP *tp);
  190. int initstruct(TYP *tp);
  191. int makelabel(void);
  192. int makeref(int ispc, SYM *sp, long val);
  193. int makestorage(long val);
  194. int agflush(int size, long val);
  195. int agbits(int size, long value);
  196. int initfloat(void);
  197. int initlongdouble(void);
  198. int initdouble(void);
  199. int initchar(void);
  200. int initshort(void);
  201. int inituchar(void);
  202. int initushort(void);
  203. int initlong(void);
  204. int initulong(void);
  205. void getreflvalue(ENODE **node, TYP **tp,int pointer);
  206. int checkrefeval(ENODE *node);
  207. int refeval(ENODE *one, ENODE **two);
  208. int initref(TYP *tp);
  209. int initpointer(void);
  210. int initpointerfunc(void);
  211. void endinit(void);
  212.                               /* Intexpr.c */
  213. long ieprimary(TYP **tp)   ;                                      /* STATIC */
  214. long ieunary(TYP **tp);                                           /* STATIC */
  215. long iemultops(TYP **tp);                                         /* STATIC */
  216. long ieaddops(TYP **tp);                                          /* STATIC */
  217. long ieshiftops(TYP **tp);                                        /* STATIC */
  218. long ierelation(TYP **tp);                                        /* STATIC */
  219. long ieequalops(TYP **tp);                                        /* STATIC */
  220. long ieandop(TYP **tp);                                           /* STATIC */
  221. long iexorop(TYP **tp);                                           /* STATIC */
  222. long ieorop(TYP **tp);                                            /* STATIC */
  223. long ielandop(TYP **tp);                                          /* STATIC */
  224. long ielorop(TYP **tp);                                           /* STATIC */
  225. long iecondop(TYP **tp);                                          /* STATIC */
  226. long intexpr(TYP **tp);
  227.                                /* List.c */
  228. char * unmangledname(char *str);                                  /* STATIC */
  229. void put_sc(int scl);
  230. void put_ty(TYP *tp);
  231. void list_var(SYM *sp, int i);
  232. void list_table(TABLE *t,int j);
  233.                               /* Memmgt.c */
  234. void release_local(void); /* PROTOTYPE */
  235. void release_global(void); /* PROTOTYPE */
  236. void release_opt(void); /* PROTOTYPE */
  237. void release_oc(void); /* PROTOTYPE */
  238. void mem_summary(void); /* PROTOTYPE */
  239. void memini(void);
  240. char    *xalloc(int siz);
  241. char    *oalloc(int siz);
  242. char *ocalloc(int siz);
  243. void release_local(void );
  244. void release_global(void);
  245. void release_opt(void);
  246. void release_oc(void);
  247. void mem_summary(void);
  248. /* Protogen Version 1.00 Saturday May 31, 1997  17:24:43 */
  249.                              /* Optimize.c */
  250. int maxinttype(ENODE *ep1, ENODE *ep2);
  251. int maxfloattype(ENODE *ep1, ENODE *ep2);
  252. int getmode(ENODE *ep1,ENODE *ep2);
  253. void dooper(ENODE ** node, int mode);
  254. long     pwrof2(int i);
  255. long     mod_mask(int i);
  256. void opt0(ENODE ** node);
  257. long     xfold2(ENODE * node);
  258. void fold_const2(ENODE ** node);
  259. void opt4(ENODE ** node);
  260.                               /* Preproc.c */
  261. void filemac(short *string); /* PROTOTYPE */
  262. void datemac(short *string); /* PROTOTYPE */
  263. void timemac(short *string); /* PROTOTYPE */
  264. void linemac(short *string); /* PROTOTYPE */
  265. void pushif(void); /* PROTOTYPE */
  266. void preprocini(void);
  267. int preprocess(void);
  268. int doerror(void);
  269. int dopragma(void);
  270. void dumpstartups(void);
  271. int doline(void);
  272. int doinclude(void);
  273. short *plitlate(short *string);
  274. void glbdefine(char *name, char*value);
  275. int dodefine(void);
  276. int doundef(void);
  277. int undef2(void);
  278. void getdefsym(void);
  279. int defid(short *name, short **p, char *q);
  280. int definsert(short *end, short *begin, short * text, int len, int replen);
  281. int defreplace(short *macro, int count, short **oldargs, short **newargs);
  282. void cnvt(short *out,char *in);
  283. void filemac(short *string);
  284. void datemac(short *string);
  285. void timemac(short *string);
  286. void linemac(short *string);
  287. void defmacroreplace(short *macro, short *name);
  288. void defcheck(short *line);
  289. void repdefines(short *lptr);                                     /* STATIC */
  290. void pushif(void);
  291. void popif(void);
  292. void ansieol(void);
  293. int doifdef (int flag);
  294. int doif(int flag);
  295. int doelif(void);
  296. int doelse(void);
  297. int doendif(void);
  298.                              /* Searchkw.c */
  299. void kwini(void) ;
  300. int searchkw(void);
  301. /* Protogen Version 1.00 Saturday May 31, 1997  17:24:44 */
  302.                                /* Stmt.c */
  303. void stmtini(void);
  304. int scanassign(ENODE *node);
  305. TYP *doassign(ENODE **exp, int canerror, int *skm);
  306. SNODE    *whilestmt(void) ;
  307. SNODE    *dostmt(void) ;
  308. SNODE    *forstmt(void) ;
  309. SNODE    *ifstmt(void) ;
  310. SNODE    *casestmt(SNODE *lst) ;
  311. int     checkcases(SNODE *head) ;
  312. SNODE    *switchstmt(void) ;
  313. SNODE    *retstmt(void) ;
  314. SNODE    *breakstmt(void) ;
  315. SNODE    *contstmt(void) ;
  316. SNODE *_genwordstmt(void);
  317. SNODE    *exprstmt(void) ;
  318. SNODE *snp_line(void);
  319. void dodefaultinit(SYM *sp);
  320. void doautoinit(SYM *sym);
  321. SNODE    *compound(void) ;
  322. SNODE    *labelstmt(int fetchnext) ;
  323. SNODE    *gotostmt(void) ;
  324. SNODE *asm_statement(int shortfin); /* PROTOTYPE */
  325. SNODE    *statement(void) ;
  326. SNODE *cppblockedstatement(void);
  327.                               /* Symbol.c */
  328. void symini(void);
  329. unsigned int ComputeHash(char *string,int size);                  /* STATIC */
  330. HASHREC *AddHash(HASHREC *item,HASHREC **table,int size);
  331. HASHREC **LookupHash(char *key, HASHREC **table, int size);
  332. SYM     *search(char *na,TABLE *table);
  333. SYM     *gsearch(char *na);
  334. void insert(SYM *sp,TABLE *table);
  335.                                /* Types.c */
  336. int exactype(TYP *typ1, TYP *typ2);
  337. int checktype(TYP *typ1, TYP *typ2);
  338. int checktypeassign(TYP *typ1, TYP *typ2);
  339. TYP *unmang2(char *buf, TYP *tp, int *ptr, int **ptrs);           /* STATIC */
  340. char * typenum(char *buf, TYP *typ);