亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cmain.c

?? C語言編譯器的源代碼
?? C
字號:
/*
 * 68K/386 32-bit C compiler.
 *
 * copyright (c) 1997, David Lindauer
 * 
 * This compiler is intended for educational use.  It may not be used
 * for profit without the express written consent of the author.
 *
 * It may be freely redistributed, as long as this notice remains intact
 * and either the original sources or derived sources 
 * are distributed along with any executables derived from the originals.
 *
 * The author is not responsible for any damages that may arise from use
 * of this software, either idirect or consequential.
 *
 * v1.35 March 1997
 * David Lindauer, gclind01@starbase.spd.louisville.edu
 *
 * Credits to Mathew Brandt for original K&R C compiler
 *
 */
/*
 * The following symbols must be defined on the compile command line:
 *    PROGNAME
 *    ENVNAME
 *    GLBDEFINE
 *	  SOURCEXT
 */
#include        <stdio.h>
#include				<malloc.h>
#include 				<string.h>
#include 				<setjmp.h>
#include				<signal.h>
#include				<stdlib.h>
#include				"utype.h"	
#include				"cmdline.h"	
#include        "expr.h"
#include				"errors.h"
#include        "c.h"
#include 				"diag.h"

#define VERSION 151

typedef struct list {
		struct list *link;
		void *data;
} LIST;

extern char GLBDEFINE[],SOURCEXT[],ENVNAME[],PROGNAME[];

extern ERRORS *errlist;
extern TABLE    tagtable;
extern int      total_errors;
extern int diagcount;
extern char *errfile;
extern TABLE gsyms;

FILE            *inputFile = 0, *listFile = 0, *outputFile = 0, *cppFile = 0, *errFile = 0;
int stoponerr = 0;
LIST *clist = 0;
LIST *deflist = 0;
int prm_linkreg = TRUE;
int prm_stackcheck = FALSE;
int prm_warning = TRUE;
#ifdef OBJEXT
int prm_asmfile = FALSE;
#else
int prm_asmfile = TRUE;
#endif
int prm_ansi = FALSE;
int prm_listfile = FALSE;
int prm_maxerr = 25;
int prm_diag = FALSE;
int prm_bss = TRUE;
int prm_cppfile = FALSE;
int prm_packing = FALSE;
int prm_revbits = FALSE;
int prm_lines = TRUE;
int prm_cplusplus = FALSE;
int prm_cmangle = TRUE;
int basear = 1, basedr = 1, basefr = 1;
int prm_debug = FALSE;
int version = VERSION;
int prm_errfile = FALSE;

char *prm_searchpath = 0;
jmp_buf ctrlcreturn;
int file_count = 0;

char     *infile, listfile[40],outfile[40],cppfile[40],errorfile[40];
void bool_setup(char select, char *string);
void err_setup(char select, char *string);
void incl_setup(char select, char *string);
void def_setup(char select, char *string);
void codegen_setup(char select, char *string);
void optimize_setup(char select, char *string);
void warning_setup(char select, char *string);
void parsefile(char select, char *string);

/* setup for ARGS.C */
ARGLIST ArgList[] = {
  { 'i', ARG_BOOL, bool_setup },
  { 'e', ARG_BOOL, bool_setup },
  { 'f', ARG_CONCATSTRING, parsefile },
  { 'l', ARG_BOOL, bool_setup },
#ifdef OBJEXT
  { 'v', ARG_BOOL, bool_setup },
#endif
  { 'w', ARG_CONCATSTRING, warning_setup },
  { 'A', ARG_BOOL, bool_setup },
  { 'C', ARG_CONCATSTRING, codegen_setup },
  { 'O', ARG_CONCATSTRING, optimize_setup },
  { 'E', ARG_CONCATSTRING, err_setup },
  { 'I', ARG_CONCATSTRING, incl_setup },
	{ 'D', ARG_CONCATSTRING, def_setup },
#ifdef OBJEXT
  { 'S', ARG_BOOL, bool_setup },
#endif
  { 0, 0, 0 }
};



void bool_setup(char select, char *string)
/*
 * activation routine (callback) for boolean command line arguments
 */
{
	int bool = (int)string;
	if (select == 'S')
		prm_asmfile = bool;
  if (select == 'l')
		prm_listfile = bool;
	if (select == 'i')
		prm_cppfile = bool;
	if (select == 'e')
		prm_errfile = bool;
	if (select == 'v')
		prm_debug = bool;
	if (select == 'A')
		prm_ansi = bool;
}
void codegen_setup(char select, char *string)
/*
 * activation for code-gen type command line arguments
 */
{
		int bool = TRUE;
		while (*string) {
				switch (*string) {
					case 'd':
						prm_diag = bool;
						break;
					case 'p':
						prm_packing = bool;
						break;
					case 'r':
						prm_revbits = bool;
						break;
					case 'b':
						prm_bss=bool;
						break;
					case 'l':
						prm_lines = bool;
						break;
					case 'm':
						prm_cmangle = bool;
						break;
					case 'S':
						prm_stackcheck = bool;
						break;
					case 'R':
						prm_linkreg = bool;
						break;
					case '-':
						bool = FALSE;
						break;
					case '+':
						bool = TRUE;
						break;
					default:
						if (!confcodegen(*string,bool)) 
							fatal("Illegal codegen parameter ");
				}
			string++;
		}
}
void optimize_setup(char select, char *string)
/*
 * activation for optimizer command line arguments
 */
{
		int bool = TRUE;
		while (*string) {
			switch (*string) {
				case 'R':
					string++;
					while (*string && *string != '+' && *string != '-') {
						switch (*string++) {
							case 'a':
								basear = bool;
								break;
							case 'd':
								basedr = bool;
								break;
							case 'f':
								basefr = bool;
								break;
							default:
								goto errorx;
						}
						if (!*string)
							return;
					}
					break;
				case '-':
					bool = FALSE;
					break;
				case '+':
					bool = TRUE;
					break;
				default:
errorx:
					fatal("Illegal optimizer parameter");
			}
			string++;
		}
}
void err_setup(char select, char *string)
/*
 * activation for the max errs argument
 */
{
	prm_maxerr = atoi(string);
}
void incl_setup(char select, char * string)
/*
 * activation for include paths
 */
{
	if (prm_searchpath)
		prm_searchpath = realloc(prm_searchpath,strlen(string)+strlen(prm_searchpath)+1);
	else {
		prm_searchpath = malloc(strlen(string)+1);
		prm_searchpath[0] = 0;
	}
	strcat(prm_searchpath,string);
}
void def_setup(char select, char *string)
/*
 * activation for command line #defines
 */
{
	char *s = malloc(strlen(string)+1);
	LIST *l = malloc(sizeof(LIST));
	strcpy(s,string);
	l->link = deflist;
	deflist = l;
	l->data = s;
}
void setglbdefs(void)
/*
 * function declares any global defines from the command line and also
 * declares a couple of other macros so we can tell what the compiler is
 * doing
 */
{
	LIST *l = deflist;
	while (l) {
		char *s = l->data;
		char *n = s;
		while (*s && *s != '=')
			s++;
		if (*s == '=')
			*s++=0;
		glbdefine(n,s);
		l = l->link;
	}
#ifdef CPLUSPLUS
	if (prm_cplusplus) {
		glbdefine("__cplusplus","");
	}
#endif
	glbdefine(GLBDEFINE,"");
}
void InsertAnyFile(FILE *inf, FILE *outf, char *filename, char *path, int drive)
/*
 * Insert a file name onto the list of files to process
 */

{
  char *newbuffer, buffer[100],*p = buffer;
	LIST *r = &clist;

	file_count++;

	if (drive != -1) {
		*p++ = (char)(drive + 'A');
		*p++ = ':';
	}
	if (path) {
		strcpy(p,path);
		strcat(p,"\\");
	}
	else
		*p = 0;
  /* Allocate buffer and make .C if no extension */
	strcat(buffer,filename);
  AddExt(buffer,".C");
  newbuffer = (char *) malloc(strlen(buffer) + 1);
  strcpy(newbuffer,buffer);

  /* Insert file */
	while (r->link)
		r = r->link;
	r->link = malloc(sizeof(LIST));
	r = r->link;
	r->link = 0;
	r->data = newbuffer;
}
void dumperrs(FILE *file);
void setfile(char *buf,char *orgbuf,char *ext)
/*
 * Get rid of a file path an add an extension to the file name
 */
{
	char *p = strrchr(orgbuf,'\\');
	if (!p) p = orgbuf;
	else p++;
	strcpy(buf,p);
	StripExt(buf);
	AddExt(buf,ext);
}
int parse_arbitrary(char *string)
/*
 * take a C string and and convert it to ARGC, ARGV format and then run
 * it through the argument parser
 */
{
	char *argv[40];
	int rv,i;
	int argc = 1;
	if (!string || !*string)
		return 1;
	while (1) {
		while (*string == ' ') 
			string++;
		if (!*string)
			break;
		argv[argc++] = string;
		while (*string && *string != ' ') string++;
		if (!*string)
			break;
		*string = 0;
		string++;
	}
  rv = parse_args(&argc,argv,TRUE);
  for (i= 1; i < argc; i++)
		InsertAnyFile(0,0,argv[i],0,-1);
	return rv;
}
void parsefile(char select, char *string)
/*
 * parse arguments from an input file
 */
{
	FILE *temp;
	if (!(temp = fopen(string,"r")))
		fatal("Argument file not found");
	while (!feof(temp)) {
		char buf[256];
		buf[0] = 0;
		fgets(buf,256,temp);
		if (buf[strlen(buf)-1] == '\n')
			buf[strlen(buf)-1] = 0;
		if (!parse_arbitrary(buf))
			break;
	}
	fclose(temp);
}
void addinclude(void)
/*
 * Look up the INCLUDE environment variable and append it to the
 * search path
 */
{
	char *string = getenv("CCINCL");
	if (string && string[0]) {
		char temp[500];
		strcpy(temp,string);
		if (prm_searchpath) {
			strcat(temp,";");
			strcat(temp,prm_searchpath);
			free(prm_searchpath);
		}
		prm_searchpath = malloc(strlen(temp)+1);
		strcpy(prm_searchpath,temp);
	}
}
int parseenv(char *name)
/*
 * Parse the environment argument string
 */
{
	char *string = getenv(name);
	return parse_arbitrary(string);
}
void dumperrs(FILE *file)
{
#ifdef DIAGNOSTICS
	if (diagcount)
		fprintf(file,"%d Diagnostics detected\n",diagcount);
#endif
	if (total_errors)
		fprintf(file,"%d Total errors\n",total_errors);
	if (prm_diag)
		mem_summary();
}
void summary(void)
{       
	if (prm_listfile) {
    fprintf(listFile,"\f\n *** global scope symbol table ***\n\n");
    list_table(&gsyms,0);
		if (tagtable.head) {
    	fprintf(listFile,"\n *** structures and unions ***\n\n");
    	list_table(&tagtable,0);
		}
		dumperrs(listFile);
  }
}
void ctrlchandler(int aa)
{
	longjmp(ctrlcreturn,1);
}
int main(int argc,char *argv[])
{
	char buffer[40];
	char *p;
  banner("%s Version %d.%02d Copyright (c) 1994-1997, LADsoft",PROGNAME,VERSION/100,VERSION %100);
  outfile[0] = 0;

	/* parse the environment and command line */
	/* inpout cfg file has already been parsed */
  if (!parseenv(ENVNAME))
    usage(argv[0]);
  if (!parse_args(&argc, argv, TRUE) || (!file_count && argc == 1))
    usage(argv[0]);


	/* tack the environment includes in */
	addinclude();

	/* processor-dependent initialization */
	confsetup();

  /* Scan the command line for file names or response files */
	{ int i;
		for (i=1; i <argc; i++) 
			InsertAnyFile(0,0,argv[i],0,-1);
	}


  /* Set up a ctrl-C handler so we can exit the prog */
	signal(SIGINT,ctrlchandler);
	if (setjmp(ctrlcreturn))
		exit(1);
	/* loop through and compile all the files on the file list */
	while (clist) {
		inasmini();
		memini();
	  symini();
		stmtini();
		kwini();
		initini();
		preprocini();
		exprini();
		declini();
		funcini();
		peepini();
		outcodeini();
		regini();
		printf("file: %s\n",clist->data);
	  strcpy(buffer,clist->data);
#ifdef OBJEXT
		if (prm_asmfile)
#endif
			setfile(outfile,buffer,SOURCEXT);
#ifdef OBJEXT
		else
			setfile(outfile,buffer,OBJEXT);
#endif
		setfile(cppfile,buffer,".I");
		setfile(listfile,buffer,".LST");
		setfile(errorfile,buffer,".ERR");
		prm_cplusplus = FALSE;
	  AddExt(buffer,".C");
#ifdef CPLUSPLUS
		p = strrchr(buffer,'.');
		if (*(p-1) != '.') {
			if (p[1] == 'c' || p[1] == 'C')
				if (p[2] == 'p' || p[2] == 'P')
					if (p[3] == 'p' || p[3] == 'P')
						prm_cplusplus = TRUE;
		}
#endif
		infile = errfile = litlate(buffer);

		if (prm_cppfile) {
			if (!(cppFile = fopen(cppfile,"w")))
				fatal("Can't open cpp file %s",cppfile);
		}
  	if (!(inputFile = fopen(infile,"r")))
    	fatal("Can't open input file %s",infile);
  	if (!(outputFile = fopen(outfile,"w"))) {
    	fclose(inputFile);
    	fatal("Can't open output file %s",outfile);
	  }
		if (prm_asmfile)
			asm_header();
	  if (prm_listfile)
  		if (!(listFile = fopen(listfile,"w"))) {
    		fclose(inputFile);
		    fclose(outputFile);
    		fatal("Can't open list file %s",listfile);
  		}
	  if (prm_errfile)
  		if (!(errFile = fopen(errorfile,"w"))) {
				fclose(listFile);
    		fclose(inputFile);
		    fclose(outputFile);
    		fatal("Can't open error file %s",errorfile);
  		}
		initerr();
	  initsym();
		setglbdefs();
  	getch();
  	getsym();
	  compile();
		summary();
  	release_global();
		dumperrs(stdout);
	  fclose(inputFile);
		if (prm_asmfile) {
  		fclose(outputFile);
		}
  	if (prm_listfile)
    	fclose(listFile);
  	if (prm_errfile)
    	fclose(errFile);
  	if (prm_cppfile)
    	fclose(cppFile);
		clist = clist->link;

		/* Remove the ASM file if there are errors */
	if (total_errors)
			remove(outfile);

		/* Remove the ERR file if no warnings / errors */
		if (!errlist && prm_errfile)
			remove(errorfile);

		/* Flag to stop if there are any errors */
		stoponerr |= total_errors;
	}
  if (stoponerr)
   	return(1);
  else
    return(0);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91无套直看片红桃| 欧美丝袜丝nylons| 91啦中文在线观看| 久久免费午夜影院| 毛片一区二区三区| 精品国产一区二区三区久久影院| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 亚洲一区二区高清| 国产精品国产自产拍高清av | 欧美在线高清视频| 成人a区在线观看| av在线播放不卡| 大白屁股一区二区视频| 青青草国产精品97视觉盛宴 | 国产高清不卡二三区| 99re这里只有精品6| 色哦色哦哦色天天综合| 中文幕一区二区三区久久蜜桃| 久久国产精品无码网站| 精品国产一区二区亚洲人成毛片 | 国产白丝网站精品污在线入口| 亚洲人123区| 日韩一区二区电影在线| 色域天天综合网| 麻豆国产欧美一区二区三区| 天天综合天天做天天综合| 一区二区三区中文字幕| 日韩成人精品在线| 国产成人午夜视频| 成人精品一区二区三区四区| 欧美日韩精品福利| 日本欧美加勒比视频| 久久99精品一区二区三区三区| 亚洲精选在线视频| 免费在线观看不卡| 一区二区三区加勒比av| 韩国成人精品a∨在线观看| 欧美在线观看18| 欧美日韩另类一区| 国产精品日韩成人| 国产精品美日韩| 美腿丝袜亚洲综合| 久久久久久久久久电影| 日韩在线观看一区二区| 日韩女优电影在线观看| 国产日韩欧美a| 欧美sm美女调教| 国产 日韩 欧美大片| 国产欧美一区二区精品仙草咪| 精品一区二区三区免费观看| 国产美女一区二区三区| 国产高清不卡一区二区| 欧美日韩一二区| 午夜久久久久久久久久一区二区| 欧美视频一区二区三区在线观看| 欧美精品 日韩| 91精品啪在线观看国产60岁| 国产大陆精品国产| www.视频一区| 日韩影视精彩在线| 欧美精品丝袜久久久中文字幕| 国产精品超碰97尤物18| 中文字幕在线视频一区| 欧美一级黄色片| 精品久久久久香蕉网| 日韩欧美国产综合| 久久久久久久免费视频了| 亚洲精品国产成人久久av盗摄 | 国产精品一区在线观看乱码| bt欧美亚洲午夜电影天堂| 亚洲国产欧美日韩另类综合| 99国内精品久久| 亚洲第一会所有码转帖| 欧美一级久久久久久久大片| 国产成人亚洲综合色影视| 尤物视频一区二区| 精品日产卡一卡二卡麻豆| 亚洲第一会所有码转帖| 亚洲欧洲99久久| 亚洲曰韩产成在线| 久久成人18免费观看| 国产成人精品免费看| 国产二区国产一区在线观看| 国产成人自拍网| 一本大道av伊人久久综合| 欧美优质美女网站| 91精品国产综合久久婷婷香蕉 | www亚洲一区| 国产人伦精品一区二区| ...xxx性欧美| 日韩激情一二三区| 中文字幕亚洲成人| 精品久久人人做人人爰| 久久精品在线观看| 亚洲国产日韩精品| 国产一区 二区 三区一级| 波多野结衣在线aⅴ中文字幕不卡| 一本到一区二区三区| 精品免费国产一区二区三区四区| 国产精品久久久久久久久快鸭| 亚洲女与黑人做爰| 韩国精品一区二区| 欧美网站一区二区| 国产欧美日韩另类视频免费观看 | 色视频成人在线观看免| 欧美一区2区视频在线观看| 成人欧美一区二区三区1314 | 亚洲在线成人精品| 夫妻av一区二区| 日韩一级完整毛片| 亚洲欧美在线aaa| 国产一区在线视频| 欧美日韩国产小视频在线观看| 国产精品毛片久久久久久| 夜夜爽夜夜爽精品视频| www.亚洲精品| 国产午夜亚洲精品午夜鲁丝片| 午夜亚洲福利老司机| 欧美日韩精品欧美日韩精品一 | 国产精品欧美一级免费| 激情国产一区二区| 欧美一级高清片在线观看| 亚洲国产精品影院| 丁香婷婷综合激情五月色| 精品少妇一区二区三区日产乱码| 亚洲自拍另类综合| 欧美这里有精品| 精品国产a毛片| 91精品午夜视频| 免费黄网站欧美| 88在线观看91蜜桃国自产| 亚洲国产成人av网| 欧美视频中文字幕| 夜夜揉揉日日人人青青一国产精品| 一区二区三区欧美亚洲| 97se狠狠狠综合亚洲狠狠| 欧美国产丝袜视频| 日韩av在线播放中文字幕| 成人午夜私人影院| 国产精品福利在线播放| av亚洲精华国产精华精华| 欧美韩国日本不卡| 成人av在线资源| 亚洲影院久久精品| 欧美一区二区三区视频免费| 蜜桃一区二区三区在线观看| 欧美在线视频全部完| 香蕉久久夜色精品国产使用方法| 欧美三级午夜理伦三级中视频| 午夜影院在线观看欧美| 日韩欧美电影一区| 成人午夜在线播放| 亚洲图片欧美色图| 精品国产成人在线影院| 成人动漫一区二区| 亚洲综合色成人| 欧美色视频在线观看| 国产一区二区三区国产| 亚洲色大成网站www久久九九| 欧美色成人综合| 青草国产精品久久久久久| 国产日产精品一区| 在线观看视频91| 国内精品免费**视频| 玉足女爽爽91| 中文字幕第一区综合| 欧美精品一二三| 99久久夜色精品国产网站| 乱一区二区av| 日韩精品成人一区二区在线| 亚洲少妇30p| 国产精品美女一区二区三区 | 一区二区三区久久久| 久久久久久久久久久电影| 宅男噜噜噜66一区二区66| 91黄视频在线| 91丨国产丨九色丨pron| 国产精品影音先锋| 国产一区欧美日韩| 免费高清成人在线| 亚洲线精品一区二区三区八戒| 国产精品久久久久久久久免费桃花 | 成人午夜精品在线| 国产高清久久久| 韩日av一区二区| 美日韩一区二区| 激情六月婷婷久久| 美女视频黄免费的久久| 日韩在线a电影| 欧美a级一区二区| 亚洲图片欧美色图| 午夜久久久久久| 污片在线观看一区二区| 肉丝袜脚交视频一区二区| 亚洲国产综合91精品麻豆| 一区二区三区在线观看网站| 一区二区三区日韩精品| 日韩美女视频一区二区| 亚洲一级二级三级| 三级一区在线视频先锋 |