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

📄 pl.c

📁 pl0的扩展编译器
💻 C
字号:
#include "pll.h"
int main()
{
	char c;
	int i=0;
	int mm;
	char filename[20];
	bool nextlev[keynum];
	c='\0';
	mm=0;
	nerror=0;
	printf("Inialize the environment...\n");
	init();
	printf("Input the source file(*.pl):\n");
	scanf("%s",filename);
	fin=fopen(filename,"r");
	if(fin==NULL)
	{
		printf("can't open the source file:%s\n",filename);
		return -1;
	}
	//fout=fopen("test3.out","w");
	//if(fout==NULL)
//	{
//		printf("can not create the file!\n");
//		return -1;
//	}
	printf("Create the table file(*.tab),Input file name:\n");
	scanf("%s",filename);
	ftab=fopen(filename,"w");
	if(ftab==NULL)
	{
		printf("can not create the table file!\n");
		return -1;
	}
	printf("Create the vmcode file(*.cod),Input file name:\n");
	scanf("%s",filename);
	fcode=fopen(filename,"w");
	if(fcode==NULL)
	{
		printf("can not create file for the middle code.\n");
		return -1;
	}
	cc=ll=0;
	ch='\t';
	getsymdo;
	nextlev[period]=true;
	printf("Pcc compiling...\n");
	mm=senantic(0,0,nextlev);
	printf("Pcc linking...\n");
	if(nerror>1)
	{
		for(i=0;i<32;i++)
			printf("**");
		printf("\n");
		printf("****************Too manay errors .can't execute.****************\n");
		for(i=0;i<32;i++)
			printf("**");
		printf("\n");
		return -1;
	}
	interpret_exec();
	printf("Out put the middle code...\n");
	for(mm=0;mm<cx;mm++)
	{
		if(code[mm].flag==0||code[mm].flag==1)
		{
			printf("%d %s %d %d\n",mm,charcode[code[mm].vc],code[mm].l,code[mm].a);
			fprintf(fcode,"%d\t %s\t %d\t %d\n",mm,charcode[code[mm].vc],code[mm].l,code[mm].a);
		}
		else
		{
			printf("%d %s %d %f\n",mm,charcode[code[mm].vc],code[mm].l,code[mm].a);
			fprintf(fcode,"%d\t %s\t %d\t %f\n",mm,charcode[code[mm].vc],code[mm].l,code[mm].a);
		}
	}
	printf("Close the files:you can check them in directory.\n");
	printf("Pcc finished!\n");

	close();
	return 0;
}

⌨️ 快捷键说明

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