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

📄 main.c

📁 用C++编写的一个编译器
💻 C
字号:
#include <stdio.h>
#include "utility.h"
#include "genasm.h"
//
//Global variable
//
extern FILE * yyin;
int lineno;
char *currentfile;
int yyparse();

int compile()
{
	asm_header();
	yyparse();
	if(report())
		return 1;
	asm_globaldata();
	asm_externdecl();
	return 0;
}


//the entry point of DCC

int main(int argc, char *argv[])
{
	int i, j, k;
	char *input_filename = NULL;
	char *output_filename = NULL;

	printf("10042130247 于沛沛\n");
	
	if(argc != 2)
	{
		printf("DCC <filename>\n");
		return 0;
	}
	input_filename = argv[1];

	
	yyin = fopen(input_filename, "r+");
	if(!yyin)
	{
		fprintf(stderr, "Can not open input file\n");
		return 1;
	}
	currentfile = input_filename;
	lineno = 1;


	for(j=-1,k=i=0;input_filename[i];i++)
	{
		if(input_filename[i]=='\\')k=i+1;
		else if(input_filename[i]=='.')j=i;
	}
	if(j>0)
	{
		output_filename = (char*)dmalloc(j-k+8, false);
		input_filename[j] = 0;
	}
	sprintf(output_filename, "%s.asm", input_filename+k);

	if(!freopen(output_filename, "w+", stdout))
	{
		fprintf(stderr, "Can not open output file\n");
		return 1;
	};

	compile();
	
	release_local();
	release_global();

	if(error_count)
	{
		fclose(stdout);
		remove(output_filename);
	}

	return 0;
}

⌨️ 快捷键说明

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